Swift缓存TableView JSON数据

3

我想知道是否可以缓存tableView的JSON数据?

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

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

然后,在alamofire的API调用内,我获取JSON数据并进行如下分配:

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

但是有没有办法缓存这些数据,让我不必每次调用API?
2个回答

3
您可以创建一个单例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
}

有没有办法将我的缓存同步到服务器?例如,如果我的缓存数据缺少服务器添加的新值。 - user2636197
为此,您需要集成一些特殊服务,如实时数据库服务。您可以尝试使用适用于iOS的Google Firebase。 - Sahil Mahajan
@user2636197 如果您只需要在应用程序实例中保存数据,请使用上面提供的单例<iProgrammer>。假设您需要保留它,可以将其保存为文档目录中的文件。对于同步,服务器需要支持机制,并根据服务器逻辑更新本地存储的文件。 - Dileep
@iProgrammer 我看了一下,但我只需要缓存一些几乎是静态数据的类别,因为我最多每年更新一次它们。但我已经接受了你的答案,你能否提供一个更完整的代码示例?例如,我如何知道是否已经缓存了数据。 - user2636197

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接