iOS上的Objective C数据caching

我从一个API拉数据,然后用它构build出我的数据对象。 我想为将来caching这些数据。 我一直在NSUserDefaults中存储API的string,然后每次加载应用程序时重新parsing它。 这有效,但它似乎是错误的方式去做。

我怎样才能做到这一点?

你有没有注意到NSCache ?

NSCache对象是一个可变集合,存储键值对,类似于NSDictionary对象。 NSCache类提供了一个编程接口来添加和删除对象,并根据caching中的总成本和对象数量设置逐出策略。

就我个人而言,我非常喜欢EGOCache类,在我的项目中我使用了它们很多:

https://github.com/enormego/EGOCache

这些类很容易使用,我曾经有一个类似的devise类,但是这些类更全面,所以我决定坚持下去(不想重复发明)。

这个问题有很多不同的解决scheme,没有“正确”的方法来做到这一点。 一些受欢迎的选项是:

  • 核心数据 – 苹果的持久性框架。 非常高效,但更困难。
  • SQLite – 快速而灵活的,但骨子里。
  • Plists – 基本上写一个文件到磁盘,你必须手动读写。
  • NSUserDefaults – 最轻的“键值”选项。

我鼓励你们全部阅读,看看哪一个最适合你。

我投核心数据

什么types的数据? 如果它的文本/string基于SQLLite可能是最好的。

我会将计算/分析的数据存储在Core Data存储中,或者存储在应用程序Documents目录中的NSData平面文件中。 你是正确的,存储在NSUserDefaults,然后parsing感觉有点矫枉过正。