仅保留Core Data中的部分对象

时间:2013-09-01 15:27:32

标签: iphone ios core-data nsmanagedobjectcontext

问题:我实现了用户在xml中下载大量对象的应用程序。为了减少峰值内存占用,我想将数据解析为Core Data,然后使用批处理在表视图中显示它们。我不希望它们被保存,因为对象每天都在变化,但我想让用户选择它的收藏对象,然后保存它们。收藏夹将显示在不同的表格视图中。

我正在思考的解决方案:

  1. 创建两个NSManagedObjectContext(一个main和一个tmp)。将对象解析为tmp,如果它被标记为主要的收藏副本对象并从那里保存它。
  2. 忘记内存并将数据保存在某个阵列中,只保存选择的内容。
  3. 使用一个NSManagedObjectContext保存所有内容,然后在应用程序将终止删除unmarket作为收藏夹。
  4. 这里的任何暗示都会很好。还有一些代码示例代码与解决方案一,因为我是Core Data的新手,我可能会遇到问题。我现在一直在寻找合适的解决方案两天。

1 个答案:

答案 0 :(得分:0)

我建议你忘记优化内存占用,除非你有一些确凿的证据表明实际上需要这样做。但当然这取决于“xml中的大量对象”究竟意味着什么。

我假设您没有下载数百万个XML文档,只是为了在应用程序完成时再将它们丢弃(因为这会严重浪费网络资源)。相比之下,就内存而言,具有几百甚至几千个类似XML的小数据结构的数组很可能无需担心。

话虽如此,如果你需要用Core Data保存临时数据和持久数据,我会选择一个带有两个实体而不是两个单独上下文的NSManagedObjectContext。或者您甚至可以拥有一个实体,并将某些实例标记为临时数据。管理两个不同的上下文意味着额外的开销,而我真的没有看到这种方法的任何优势。

相关问题