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

问题描述 投票:1回答:1

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

谢谢!

ios arrays swift caching
1个回答
1
投票

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

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

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

示例场景:

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