首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解NSManagedObject

理解NSManagedObject
EN

Stack Overflow用户
提问于 2010-07-31 10:24:18
回答 2查看 3.6K关注 0票数 2

在一个现有的项目中,我尝试在项目创建很久之后引入核心数据,因此它的模型已经到位。我已经创建了xcdatamodel,并在其中添加了我唯一的类。该类应该充当应用程序中对象的全局存储。这个类正确地实现了NSManagedObject,我已经验证它是在上下文中创建和保存的,也是用一个提取结果检索的。

在这个类中保存数据的方法是使用NSMutableArray。但这是行不通的。下面是这个类的一个片段:

代码语言:javascript
复制
@interface WZMPersistentStore : NSManagedObject<NSCoding> {
 NSMutableArray *persistentStorage;
}

@property(nonatomic,retain) NSMutableArray *persistentStorage;

-(void)add:(id)element;
-(void)remove:(id)element;
-(id)objectAtIndex:(NSUInteger)index;
-(NSUInteger)num;

@end

在实现中,我还像这样覆盖了initWithEntity:

代码语言:javascript
复制
- (id)initWithEntity:(NSEntityDescription*)entity insertIntoManagedObjectContext:(NSManagedObjectContext*)context {
 NSLog(@"init with entity");
 [super initWithEntity:entity insertIntoManagedObjectContext:context];

 return [self init];
}

init方法只初始化可变数组,我从日志中可以看到,在创建实体时,应用程序委托正确地调用了它。add方法只将消息insertObject发送到persistentStorage。由此产生的问题如下:

  1. 我在做“概念化”对吧?我的意思是,在托管对象中有实例变量并像我一样初始化它是正确的吗?
  2. 当ns记录persistentStorage的大小时,即使在记录addObject消息之后的片刻(编辑:这不是真的,我已经再次验证并正确地添加了1),我也总是得到0。
  3. 通过persistentStorage存储在托管对象类中的对象是具有属性的普通类。我需要对他们做些什么吗?我想不是因为我在运行时没有收到任何错误。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-01 19:07:51

我终于设法解决了这个问题。即使我是目标-c方面的新手,我认为在项目完成后引入核心数据也不是一个好主意。即使很多人声称这很容易。不幸的是,所有这么说的人都证明了一个实体的简单教程,其中有一个字符串属性需要更改。相反,在我的项目中,除了现有的代码之外,我还编写了许多代码,加上一些子类(例如NSManagedObject),这些子类破坏了原始模型。这个添加的代码也必须仔细编写。派生的问题可以很简单,就像没有保存的属性,或者删除错误的实体一样危险。

事实上,我的问题是由于序列化过程中涉及的类中的解码和编码方法配置错误。

对于我的问题:

-Point one仍然没有答案,因为我对目标c还没有信心。

-Point 2,正如我所说的,相关对象在编码/代码方面有一些问题。

-Point三,我错了,有很多代码要写,这取决于相关类的复杂程度。

票数 0
EN

Stack Overflow用户

发布于 2010-08-06 03:20:55

No,这不是“正确”的方法。可以在awakeFromFetch中执行实例变量的初始化。苹果针对NSManagedObject子类的指导原则包括以下内容:

还不鼓励您重写initWithEntity:insertIntoManagedObjectContext:deallocfinalize。上下文将不会注意到更改initWithEntity:insertIntoManagedObjectContext:方法中的值,如果您不小心,则可能不会保存这些更改。大多数初始化自定义应该在清醒的…中执行。方法。如果确实覆盖了initWithEntity:insertIntoManagedObjectContext:,则必须确保遵守“方法描述..。”中规定的要求。

要真正帮助你,我需要对你想要完成的事情有一个更深入的了解。无论如何,我强烈建议在继续之前梳理一下苹果的核心数据编程指南和示例代码。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3377694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档