代码之家  ›  专栏  ›  技术社区  ›  Rog

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

  •  0
  • Rog  · 技术社区  · 14 年前

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

    一旦解析完成,用户就可以浏览这些对象,并可能将它们标记为收藏夹。

    完成后,我希望能够在一个单独的选项卡栏中显示这些“标记为收藏夹”的对象,并在用户将它们标记为收藏夹时保留它们。

    1. 创建一个额外的持久存储;
    2. 能够将对象从一个存储复制到另一个存储

    或者

    你能提出一个更好的实施方法吗?

    罗杰里奥

    3 回复  |  直到 14 年前
        1
  •  1
  •   Marcus S. Zarra    14 年前

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

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

        2
  •  1
  •   Rog    14 年前

    对于任何对这个问题的解决方案感兴趣的人来说,事实证明Marcus的建议是正确的,而且比我最初预期的更容易实现。

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

    1. 对标记为收藏的对象执行从持久存储中获取请求

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

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

    罗格

        3
  •  0
  •   mkind    14 年前

    我不知道你的问题是否仍然是最新的,但我倾向于在你的更新列表中使用一个额外的标志,就像马库斯已经解释过的那样。所以您只需要比较标志,这是一个高性能的比较两个单独的列表。尤其是如果你把每一个数据保存两次,你的内存就会出现问题。