4

过去,在浏览基于 REST 的 iOS 应用程序的各种屏幕时,我使用了几种不同的策略来提供最佳用户体验:

  • 利用 NSURLCache:虽然这适用于某些用例,但我对这样的方法更感兴趣:“在调用 API 时立即显示缓存,然后在必要时使用更新的数据更新屏幕”。NSURLCache 似乎只为我提供了诸如读取表单缓存或根据各种策略从远程读取之类的选项,但不从缓存读取然后从远程读取。
  • 利用核心数据:通过 Restkit、AFIncrementalStore 或自定义框架,这里的想法是在调用时从核心数据中获取数据。一旦调用返回,核心数据将更新为最新数据并刷新界面。它可以很好地工作,但需要大量的配置和维护,增加了高度的复杂性。当需要离线模式时这是一个不错的选择,但如果只需要缓存,这看起来有点过头了。-

有没有人对此有不同的方法,或者有一个轻量级的库可以推荐,它提供高级缓存功能,而不需要核心数据?

4

2 回答 2

0

利用 NSURLCache :您基本上希望将内存缓存合并到一个框架中。是的,它存在,它被称为AFNetworking是指定相同的文档。它从您的代码中抽象出缓存机制。

您必须设计一个数据控制器来检查磁盘(核心数据)上是否有数据,如果没有,则使用 AFNetworking(还包括内存缓存)发出网络请求。

没有框架可以为您提供使用核心数据的磁盘缓存和使用 NSURLcache 的内存缓存

于 2013-11-04T20:39:33.467 回答
0

我的问题的一个可能答案是利用 NSCoding/NSKeyedArchiver。

可以在这里找到一个很好的描述http://nshipster.com/nscoding/

通过 NSKeyedArchiver,我可以持久化数据,而无需使用 Core Data 设置整个数据模型。问题变成了如何围绕 NSKeyedArchiver 构建有效的缓存机制,以及第三方库是否已经在这样做。看起来答案被称为 TMCache https://github.com/tumblr/TMCache

所以我此时的意图是让我的类符合 NSCoding,让一些对象通过 TMCache 持久化。我计划首先将我的 API 调用路由到缓存,同时在后台更新缓存。

于 2013-11-08T15:03:31.137 回答