在缓存iOS Swift中存储数据数组

时间:2016-11-06 03:21:37

标签: ios arrays swift caching

在我的应用中,我通过网络服务获取应用的菜单。它大约有423个记录很少变化。我需要的是在首次登录后将此记录缓存在应用程序中并使用缓存数据。如果菜单数据库中有任何更改,则只有它应该再次从Web服务刷新菜单内容。 我不太清楚我怎么能做到这一点。目前我将所有记录存储在一个菜单类数组中并直接使用,这非常耗时,因为我们一次又一次地对类似记录进行服务调用。我是iOS开发的新手,所以欢迎任何建议。

谢谢!

1 个答案:

答案 0 :(得分:1)

将数据存储在NSUserDefaults中的一个(如果这不常见,但是永久配置数据),或NSCache(用于短暂数据),或CoreData(对于永久性,性能 - 依赖数据)。

在应用启动时加载此缓存数据;如果缓存的数据不存在,请从您的Web服务/ API中检索它。

如果您在更改菜单内容后不立即关注数据是最新的,请使用类似Cache-Control标题的内容来设置无效时间段details)。如果你想要确保在新的远程版本可用时菜单更新,那么你需要设置一个版本控制系统,你的应用程序在那里进行API调用以检查版本菜单并根据需要进行更新。

示例场景:

  1. 应用启动
  2. NSUserDefaults / CoreData / NSCache
  3. 加载菜单内容
  4. 异步检查菜单版本的API
  5. 如果存在新版本的菜单,请异步下载并刷新菜单视图
  6. 将更新版本的菜单保存回NSUserDefaults / CoreData / NSCache