Swift缓存tableview json数据

Posted

技术标签:

【中文标题】Swift缓存tableview json数据【英文标题】:Swift cache tableview json data 【发布时间】:2016-11-27 01:21:25 【问题描述】:

不知道是否可以缓存tableView JSON数据?

在我的 VC 中,我有这个变量:

//Categories json data
var categories: JSON! = []

然后在 alamofire api 调用中,我获取 json 数据并将其分配如下:

self.categories = JSON["catData"]
self.tableView.reloadData()

但是有什么办法可以缓存这些数据,这样我就不必每次都调用 API 了吗?

【问题讨论】:

【参考方案1】:

您可以创建一个单例 DataCache 类,您可以在其中存储要缓存的所有数据。更喜欢将数据存储在特定键的字典中

class DataCache: NSObject 
    static let sharedInstance = DataCache()
    var cache = [String, AnyObject]()

现在在你的 api 调用中,调用这个方法

DataCache.sharedInstance.cache["TableViewNameKey"] = JSON["catData"]
self.categories = JSON["catData"] // Set this property for first time when you hit API

viewWillAppear(animated: Bool)方法中

if let lCategories = DataCache.sharedInstance.cache["TableViewNameKey"] 
    self.categories = lCategories

【讨论】:

有什么方法可以将我的缓存同步到服务器吗?例如,如果我的缓存数据缺少服务器添加的新值 为此您需要集成一些特殊服务,例如实时数据库服务。你可以试试 google firebase for ios @user2636197 为了保存数据,如果您只需要在应用程序实例中,请使用上面给出的 单例。假设您需要保留它,可以将其保存为文件目录中的文件。对于同步,服务器需要支持机制,并且根据服务器逻辑,您必须更新本地存储的文件 @iProgrammer 我看了一下,但我只需要缓存一些几乎是静态数据的类别,因为我最多每年更新一次。但是我已经接受了您的回答,您能否提供一个更完整的代码示例?例如,我如何知道我是否缓存了数据【参考方案2】:

Swiftlycache 可用于数据缓存。可以直接缓存符合编码协议的数据。这很方便。需要的话可以试试 https://github.com/hlc0000/SwiftlyCache

【讨论】:

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

在swift 5中将json数据获取到tableview

在 Swift 中使用远程 JSON 数据填充 tableView

Swift 4.2 中带有 JSON 数据的 Tableview

Json数据未显示在tableView swift 5上

Swift:如何在 TableView 内的 CollectionView 中显示解析的 JSON 数据?

IOS swift如何使用返回的Json数据填充我的TableView