如何在两次重启之间缓存此api响应?

时间:2019-05-23 11:27:28

标签: swift caching core-data nsuserdefaults

我的应用的品牌计划是使用包含2个字符串的api响应设置的。

想象一下:{ primary: "#3eab5c", secondary: "#1fb3b7" }

我想缓存值,因此用户应该在没有连接的情况下打开我的应用程序,或者我的品牌api不可用,那么我可以继续使用正确的颜色进行渲染。

我的第一个想法是将它们作为键值对存储在UserDefaults中,并在需要时检索它们。

我不确定这是否是最佳做法,也许我应该使用CoreData来缓存原始响应?

如果CoreData是最好的选择,我如何在这里缓存我的api响应?

1 个答案:

答案 0 :(得分:0)

您可以简单地save/fetchUserDefaults的形式Data来回复。

struct Response: Codable {
    var primary: String?
    var secondary: String?
}
let response = Response(primary: "#3eab5c", secondary: "#1fb3b7")

//Saving
if let data = try? JSONEncoder().encode(response) {
    UserDefaults.standard.set(data, forKey: "CachedResponse")
}

//Fetching
if let data = UserDefaults.standard.data(forKey: "CachedResponse") {
    let response = try? JSONDecoder().decode(Response.self, from: data)
    print(response)
}

您绝对可以使用CoreData来存储您的回复。但是看来您的案子并不需要它。