Iphone 仅在核心数据中保存部分对象

Iphone 仅在核心数据中保存部分对象,iphone,ios,core-data,nsmanagedobjectcontext,Iphone,Ios,Core Data,Nsmanagedobjectcontext,问题:我正在实现一个应用程序,其中用户正在加载大量xml对象。为了减少峰值内存占用,我想将数据解析为核心数据,然后使用批处理在表视图中显示它们。我不想保存它们,因为对象每天都在变化,但我想让用户选择它最喜欢的对象,然后保存它们。收藏夹将显示在不同的表视图中 我正在考虑的解决方案: 创建两个NSManagedObjectContext(一个main和一个tmp)。将对象解析到tmp,如果将其标记为收藏夹,则将其复制到main并从那里保存 忘记内存,将数据保存在某个数组中,只保存选定的数据 使用一个

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

我正在考虑的解决方案:

  • 创建两个NSManagedObjectContext(一个main和一个tmp)。将对象解析到tmp,如果将其标记为收藏夹,则将其复制到main并从那里保存
  • 忘记内存,将数据保存在某个数组中,只保存选定的数据
  • 使用一个NSManagedObjectContext保存所有,然后应用程序将终止删除未标记为收藏夹

  • 这里有任何提示都很好。还有一些代码示例代码与解决方案一,因为我是新的核心数据,我可能有问题。我已经在寻找合适的解决方案两天了。

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

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


    也就是说,如果您最终需要使用核心数据保存临时数据和持久数据,我会选择一个包含两个实体的NSManagedObjectContext,而不是两个单独的上下文。或者,您甚至可以使用单个实体并将某些实例标记为临时数据。管理两个不同的上下文意味着额外的开销,而我并不认为这种方法有任何好处。

    有没有办法将实体(NSManagedObject的子类)用作临时数据?当您下载临时数据并仅将其中的一部分保存到核心数据时,通常是如何完成的?我只会将所有内容保存到数据库中,然后在不再需要时删除临时数据。