Iphone 使用核心数据和XML解析将对象保存为收藏夹

Iphone 使用核心数据和XML解析将对象保存为收藏夹,iphone,objective-c,xml,core-data,Iphone,Objective C,Xml,Core Data,我正在从事一个项目,在这个项目中,应用程序解析XML文件中的数据,将其保存到持久存储并填充表视图。每次应用程序打开时,如果有可用的internet连接,持久存储将被回收,XML将被再次解析,因为它会非常频繁地更新。如果没有可用的internet连接,我将只加载保存在持久存储中的最新解析的数据 解析完成后,用户将能够浏览对象,并可能将其标记为收藏夹 完成此操作后,我希望能够在单独的选项卡栏中显示这些“标记为收藏夹”对象,并在用户将其标记为收藏夹的时间内保留这些对象 如果我的持久性存储中的数据没有被

我正在从事一个项目,在这个项目中,应用程序解析XML文件中的数据,将其保存到持久存储并填充表视图。每次应用程序打开时,如果有可用的internet连接,持久存储将被回收,XML将被再次解析,因为它会非常频繁地更新。如果没有可用的internet连接,我将只加载保存在持久存储中的最新解析的数据

解析完成后,用户将能够浏览对象,并可能将其标记为收藏夹

完成此操作后,我希望能够在单独的选项卡栏中显示这些“标记为收藏夹”对象,并在用户将其标记为收藏夹的时间内保留这些对象

如果我的持久性存储中的数据没有被如此频繁地回收,这可以很容易地做到,但由于情况并非如此,我想找到最好的方法:

  • 创建一个额外的持久存储
  • 能够将对象从一个存储复制到另一个存储
  • 你能提出一个更好的实施方法吗

    非常感谢,


    Rogerio

    您可以突出将它们标记为收藏夹,然后不在模型中删除或更新它们。对于这样简单的事情,不需要将对象复制到任何地方


    在名为“favorite”的实体中放置一个布尔标志,如果该标志设置为YES,则在下次XML刷新时不要更新该实体,也不要删除它。

    我不知道您的问题是否仍然是最新的,但我倾向于为您的更新列表使用一个附加标志,就像marcus已经解释的那样。因此,您只需要比较标志,这是通过比较两个单独列表的高性能来完成的。特别是,如果您将每个数据保存两次,您的内存就会出现问题。

    对于任何对解决此问题感兴趣的人来说,事实证明Marcus的建议非常合适,而且比我最初预期的更容易实现

    这项工作的基本逻辑流程是:

  • 从web服务下载XML提要

  • 执行从持久存储中提取标记为收藏夹的对象的请求

  • 实现逻辑来比较正在解析的新对象的uniqueID和保存为收藏夹的对象

  • 如果找到匹配项,请删除现有/保存的对象,继续解析新对象并将其标记为收藏夹(仅当您的对象可能有其他/更新的数据时才需要此项,否则只需忽略正在解析的对象并保留原始对象以节省额外的处理时间)

  • 使用NSFetchedResultsController为您管理视图更新。我个人对收藏夹有一个单独的视图,并使用谓词仅显示标记为收藏夹的对象

  • 干杯,
    罗杰

    你好,马库斯,谢谢你的回复。这一切都是有道理的,但是我该如何处理那些不再是XML解析的一部分但仍然被用户标记为最喜欢的对象呢。下面是一个示例:-对提要进行解析,并将对象ABC保存到持久性存储中,添加到“最新更新”视图中-对象ABC被用户标记为收藏夹,因此它也被添加到“收藏夹”视图中-XML文件被更新,对象ABC不再是其中的一部分。下次解析文件时,它应该从“最新更新”视图中消失,但在“收藏夹”视图下仍然可用。再次感谢!