即使已删除nsmanagedobject,也要保持活动状态

时间:2014-10-02 20:19:22

标签: ios objective-c core-data

我有一个呈现对象的控制器,有时在显示此页面时删除了一些对象。而且,如果我们尝试使用这个对象 - 所有属性都是零。

是否可以使用复制NSMangedobject而无需将其作为自由对象连接到真实数据库。所以当原始对象被删除时,这个对象将是稳定且充满数据的吗?

由于

3 个答案:

答案 0 :(得分:1)

听起来你想为这个控制器创建一个新的NSManagedObjectContext。您需要在可以访问原始上下文或其持久存储协调器的位置执行此操作。如果通过故事板segue加载视图控制器,则可以在prepareForSegue:sender:中执行此操作。

控制器需要从此上下文加载其对象。您无法通过使用原始上下文获取的对象传递它。相反,向每个原始对象询问其objectID并使用这些id使用新上下文创建新的托管对象。立即创建所有新对象并访问每个对象的持久属性(以解除对象的故障)。新控制器必须对每个对象保持强有力的引用,因为上下文并不一定会保留它们。

只要您不将refreshObject:mergeChanges:mergeChangesFromContextDidSaveNotification:发送到控制器的私有上下文,所有对象都应保持有效且其属性不应更改。

答案 1 :(得分:0)

感觉就像使用核心数据对象和某种tableview。使用nsfetchedresultscontroller,您将忘记同步问题。顺便说一下,保留托管对象的地方是不安全的。您可以将managedObjectContext属性复制并设置为nil,使其与db分离,但这些对象将不是最新的。

答案 2 :(得分:-1)

如果您只想为运行时保留引用,则只需设置一个强引用(例如@property (nonatomic, retain))。如果这还不够,您可以致电[id<NSCopying> copy]

相关问题