在现有项目中,我尝试在项目创建很久之后引入 Core Data,因此它的模型已经就位。
我已经创建了 xcdatamodel 并向其中添加了我唯一的类。
该类应该充当我的应用程序中对象的全局存储。
该类正确实现了 NSManagedObject,并且我已经验证了它是在上下文中创建和保存的,并且还通过获取结果进行检索。
该类中保存数据的方式是通过NSMutableArray。但这是行不通的。这是该类的一个片段:
@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 :
- (id)initWithEntity:(NSEntityDescription*)entity insertIntoManagedObjectContext:(NSManagedObjectContext*)context {
NSLog(@"init with entity");
[super initWithEntity:entity insertIntoManagedObjectContext:context];
return [self init];
}
init 方法仅初始化可变数组,我可以从日志中看到它在创建实体时被应用程序委托正确调用。
add方法只是将消息insertObject发送到permanentStorage。
由此产生的问题是:
- 我“概念上”做得对吗?我
意思是,有实例是否正确
托管对象中的变量和
像我一样初始化?
- 当 ns 记录大小时
持久存储我总是得到 0
即使在登录后不久
添加对象消息(编辑:这不是
是的,我再次验证了,我
正确地添加了 1).
- 被管理对象中存储的对象
类槽 persistenceStorage 是
带属性的普通类。是
我需要做点什么
他们 ?我想不是因为我是
在运行时没有收到任何错误。
No,这不是“正确”的方法。您可以在中执行实例变量的初始化awakeFromFetch http://developer.apple.com/mac/library/documentation/Cocoa/Reference/CoreDataFramework/Classes/NSManagedObject_Class/Reference/NSManagedObject.html#//apple_ref/occ/instm/NSManagedObject/awakeFromFetch。 Apple 针对 NSManagedObject 子类的指南包括以下内容:
你也灰心丧气
压倒性的initWithEntity:insertIntoManagedObjectContext:
,
dealloc
, or finalize
。改变价值观
在里面initWithEntity:insertIntoManagedObjectContext:
方法不会被注意到
如果你不小心的话,
这些更改可能无法保存。最多
初始化定制应该是
在清醒的人之一中进行……
方法。如果你覆盖initWithEntity:insertIntoManagedObjectContext:
,
您必须确保遵守
方法中规定的要求
描述 [...] (NSManagedObject 类参考 http://developer.apple.com/mac/library/documentation/Cocoa/Reference/CoreDataFramework/Classes/NSManagedObject_Class/Reference/NSManagedObject.html)
为了真正提供帮助,我需要更深入地了解您想要实现的目标。无论如何,我强烈建议梳理一下苹果的核心数据编程指南 http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/CoreData/cdProgrammingGuide.html和示例代码,然后再继续。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)