iphone - 保存一些 NSManagedObjects 而不是其他的方法?

标签 iphone objective-c core-data

我正在开发一个 Core Data iPhone 应用程序,它将远程资源从网络提取到 NSManagedObjects 中并将其保存在本地。

我希望用户能够指定应保存哪些对象。这意味着一些将被保存,但许多应该被删除。但是,我可能想在不同的时间保存和删除 - 我更愿意立即保存指定的对象(以防应用程序崩溃),但仍保留其他对象,因为它们卡在 TableView 等中。

我能想到的一种方法是拥有一个不同的持久存储 - 一种用于将要保存的内容,一种用于不会保存的内容;这样我就可以随时保存“应该保存”的商店。但是,我更愿意将相同类型的对象保留在同一域中。

另一种方法是在最后保存 - 否定任何从崩溃中恢复的能力。但最后保存将允许我解析出任何未指定“应保存”的对象。

这确实是我想要的 - NSManagedObject 类中的“shouldSave”方法,或者至少是我可以在选定对象上触发的保存方法。但据我所知,这些都不存在。

所以,如果有人有任何其他建议,请告诉我!我们将不胜感激。

最佳答案

CoreData 不是用于对象序列化,它是对象图序列化。这是一个重要的区别。一旦你有了 NSManagedObject,它就会与上下文相关联,并且 CoreData 会在上下文级别处理保存,因为这是保证任何类型的对象图一致性的唯一方法。换句话说,您无法保存单个对象,因为如果它们与其他对象有关系,您还需要保存这些对象,并且它会快速级联到整个图表。

您似乎担心崩溃恢复。如果应用程序崩溃并且用户重新启动它,他们会期望只看到他们保存的项目,还是崩溃之前屏幕上的所有内容?如果是前者,您应该在保存时删除它们,并将它们从用户 View 中删除(带有一些动画),如果是后者,您应该提交所有内容,并可能在其他时间删除您不感兴趣的对象.

关于iphone - 保存一些 NSManagedObjects 而不是其他的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1648514/

相关文章:

objective-c - 无法识别的选择器发送到 iOS7 中的实例异常

objective-c - 循环缓冲录音iOS : Possible?

ios - 核心数据反向关系ios

iphone - 通过从文档中复制 .sqlite 文件预填充核心数据

iphone - jackson 相当于 iPhone 吗?

html - 下拉框的css样式在iphone上不生效

iphone - 当 objective-c 中出现推送通知时,如何在没有用户交互的情况下将 iphone 应用程序从后台带到前台?

iphone - NSInternalInconsistencyException 找不到实体名称的 NSManagedObjectModel

iphone - 重新启动模拟器时添加的新视频文件将被删除

iphone - 如何通过Uitableview的各个部分获取下一个类?