【问题标题】:Core Data and REST核心数据和 REST
【发布时间】:2011-08-11 15:08:31
【问题描述】:

我正在开发一个 iOS 应用程序,它处理通过基于 Web 的 REST API 读取和写入的不断变化的数据。 我希望一些数据在应用的整个生命周期中保持不变,但我也希望在用户退出应用时将其重置并重新加载。

我应该为此使用 Core Data 吗?如果没有,是否有一种简单的方法可以在应用程序的整个生命周期中持久保存数据(例如单例类?)。你们会推荐什么?使用 Core Data 有什么好处?如果可能,我想避免使用 Core Data,因为设置起来很痛苦。

提前致谢

【问题讨论】:

    标签: objective-c ios oop core-data


    【解决方案1】:

    Core Data 不是关于保存数据,Core Data 是关于在运行时建模数据。坚持只是一种选择。如果您对将数据持久化到磁盘不感兴趣,只需使用带有内存存储的 Core Data。

    【讨论】:

    • +1 另一种描述 Core Data 的方式是作为一种对象图。它可以存储数据之间的多种关系(以硬关系和松散获取属性的形式)。 ORM 功能只是 Core Data 的另一个好处。
    【解决方案2】:

    一个单例类是我会做的......除了,iOS 让事情变得更复杂一些,因为如果内存不足,它会退出你的应用程序。在那种情况下,如果你想持久化数据,你需要将它写出来,而 Core Data 是一个不错的选择。但是,如果您觉得如果您的应用被驱逐,您可以重新加载所有内容,那么请不要乱用它。

    【讨论】:

      【解决方案3】:

      通常,当涉及的数据太少而无法花费时间和精力来设置 Core Data 上下文时,iOS 开发人员会使用 plist 文件。这种格式类似于 JSON,因为它只允许数组、字典、数字、字符串和日期对象。要将字典或数组保存为 plist 文件,只需调用 writeToFile:atomically: 方法,然后使用 initWithContentsOfFile: 初始化程序读取它。

      【讨论】:

        【解决方案4】:

        正如 TechZen 所说,CoreData 是关于建立模型的。然后,您可以继续并覆盖模型的填充和持久化方式:本地、通过网络 (REST) 等。

        一开始在设计模型时肯定会产生一点“开销”,但后来您可以更改模型的加载/持久化方式(例如,通过单例/内存中的网络连接)而无需更改应用程序的其余部分。所以基本上你的视图控制器与这些变化是隔离的。

        【讨论】:

          【解决方案5】:

          有一个开源项目允许将 Core Data 绑定到 REST API:http://restkit.org/

          您也可以查看Mobile CouchDB。虽然它目前没有与 Core Data 绑定,但在不久的将来有计划支持它。就个人而言,Core Data 会给一些问题增加太多的复杂性,将 JSON 文档映射到 ObjC 对象并不是很困难。 CouchDB 让您可以轻松地在设备和服务器之间同步数据。

          【讨论】:

          • RestKit 有很好的潜力,但他们的文档已经过时了,如果你在他们当前版本的框架上尝试他们的示例,它甚至不会构建。所以 +1 表示潜在路线和基本路线,但 -2 表示文档不匹配。
          猜你喜欢
          • 2011-01-11
          • 1970-01-01
          • 2010-12-04
          • 2014-09-18
          • 2013-01-24
          • 2011-12-04
          • 2011-10-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多