我正在研究一款Core Data iPhone应用程序,该应用程序将远程资源从Web提取到NSManagedObjects并在本地保存。
我希望用户能够指定应该保存哪些对象。这意味着一些将被保存,但许多应该被删除。但是,我可能想在不同的时间保存和删除 - 我更愿意立即保存指定的对象(如果应用程序崩溃),但仍然保留其他对象,因为它们在表视图中等待。< / p>
我能想到的一种方法是拥有一个不同的持久性存储 - 一个用于保存的东西,一个用于不能保存的东西;这样我就可以随时保存“应该保存”的商店。但是,我更希望在同一个域中保留相同类型的对象。
另一种方法是在最后保存 - 否定任何从崩溃中恢复的能力。但是最后保存将允许我解析任何未指定为“应该保存”的对象。
这就是我想要的 - NSManagedObject类中的“shouldSave”方法,或者至少是我可以在select对象上触发的save方法。但就我所知,这些都不存在。
所以,如果有人有任何其他建议,请告诉我!非常感谢。
答案 0 :(得分:2)
CoreData不是用于对象序列化,而是对象图序列化。这是一个重要的区别。一旦有了NSManagedObject,它就会与一个上下文相关联,而CoreData会在上下文级别处理保存,因为这是保证任何类型的对象图一致性的唯一方法。换句话说,您无法保存单个对象,因为如果它们与其他对象有关系,您还需要保存这些对象,并快速级联到整个图形。
您似乎担心崩溃恢复。如果应用程序崩溃并且用户重新启动它,他们是否希望只看到他们保存的项目,或者在崩溃之前屏幕上显示的所有内容?如果它是前者你应该在保存时删除它们并从用户视图中删除它们(带有一些动画),如果它是后者你应该提交所有内容,并可能删除你不感兴趣的对象