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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在缓存iOS Swift中存储数据数组相关的知识,希望对你有一定的参考价值。

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

谢谢!

答案

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

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

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

示例场景:

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

以上是关于在缓存iOS Swift中存储数据数组的主要内容,如果未能解决你的问题,请参考以下文章

Swift新async/await并发中利用Task防止指定代码片段执行的数据竞争(Data Race)问题

如何使用 Swift 使用此代码片段为 iOS 应用程序初始化 SDK?

在 CoreData 数据库中存储包含 CGPoints 的数组(Swift)

将 swift 数组解析为有效的 json

iOS swift:使用 coredata (cloudkit) 存储缓存

Swift 中的 iOS 私有/公共数据管理和存储