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感觉有点矫枉过正。
- iOS – viewForFooterInSection粘在UITableView的底部
- iOS,CloudKit – 当我的应用程序启动时,我需要做一个抓取吗?
- 我如何select默认的UITableViewCell?
- 将UINavigationController添加到窗口时EXC_BAD_ACCESS
- 从NSArray,KVC获取最大date
- 在shouldChangeTextInRange期间防止删除前缀
- iPhone:应用程序内购买必须提交一个新的应用程序版本
- 和UIGestureRecognizer一起听UITouch事件
- 通过NSDate在NSMutableArray中对NSDictionaries进行sorting