防止托管对象被 Core Data 再次出错
Posted
技术标签:
【中文标题】防止托管对象被 Core Data 再次出错【英文标题】:Preventing managed objects from being re-faulted by Core Data 【发布时间】:2011-01-29 07:06:43 【问题描述】:我有一个模拟树结构的对象图。我希望获取(没有错误)一个完整的树结构并由我(用户)自行决定将其保留在托管对象上下文中,以便根据树的结构进行修改和计算。结构中的对象还将在它们在 MOC 中的时间段内保持对非托管对象的引用。
这可能吗?如果可以,可以通过哪些方式实现?
注意:我意识到这是对 Core Data 的轻微滥用。
【问题讨论】:
【参考方案1】:你不能直接使用Core Data来做,如果出现内存警告,它总是会尝试清除内存。
但是,如果您总是希望它在内存中,您可以创建一个包装器对象,即
@class MyObject
NSManagedObject *thisIsWhatIRepresent;
NSString *someProperty;
- (id)initWithManagedObject:(NSMagagedObject *)managedObject;
@property (nonatomic, copy) NSString *someProperty;
@end
当你初始化它时,你将所有属性从托管对象复制到这个对象的属性中。那么你的托管对象是否出现故障也没关系 - 这个对象有数据的副本。
您必须确保对对象的任何更改也会更改托管对象,尽管您可以等到有一些更改并一次保存它们?
注意:这是一个混乱的解决方案。我的建议是按预期使用 Core Data 或根本不使用 :)
【讨论】:
我想到了类似的东西,很快就得出了和你一样的结论:很乱。 “我的建议是按预期使用 Core Data 或根本不使用 :)”...我想我会得到至少一个这样的回应 :-) 直到我看到问题底部的注释,这将是我的全部答案;)我认为无论如何你都会得到一个混乱的解决方案,抱歉!以上是关于防止托管对象被 Core Data 再次出错的主要内容,如果未能解决你的问题,请参考以下文章
在后台线程上安全保存 Core Data 托管对象上下文的正确方法?
如何在通过 Core Data 保存我的 RestKit 托管对象之前对其进行修改?
使用 Core Data 时,是不是保留非托管对象类及其托管对象版本