0

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

我正在考虑的解决方案:

  1. 创建两个 NSManagedObjectContext(一个 main 和一个 tmp)。解析对象到 tmp,如果它被标记为最喜欢的复制对象到 main 并从那里保存。
  2. 忘记内存并将数据保存在某个数组中并仅保存选择的数组。
  3. 使用一个 NSManagedObjectContext 保存所有内容,并且在应用程序终止之前删除未上市的收藏夹。

这里的任何提示都会很好。还有一些带有解决方案一的代码示例代码,因为我是 Core Data 的新手,我可能会遇到问题。这两天我一直在寻找合适的解决方案。

4

1 回答 1

0

我建议你忘记优化内存占用,除非/直到你有一些确凿的证据表明这实际上是需要的。但当然,这取决于“xml 中的大量对象”的确切含义。

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

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

于 2013-09-01T17:21:10.273 回答