Как я могу кэшировать этот ответ API между перезапусками? - PullRequest
0 голосов
/ 23 мая 2019

Схема брендинга моего приложения задается с помощью ответа API, который содержит 2 строки.

Представьте себе что-то вроде: { primary: "#3eab5c", secondary: "#1fb3b7" }

Я хотел бы кэшировать значения, поэтому следуетпользователь когда-нибудь откроет мое приложение без подключения, или, возможно, мой API-интерфейс для брендинга недоступен, тогда я смогу продолжить рендеринг с использованием правильных цветов.

Моей первой мыслью было бы сохранить их в виде пар ключ-значение в UserDefaultsи извлекать их по мере необходимости.

Я не уверен, является ли это наилучшей практикой, и, возможно, мне следует использовать CoreData для кэширования исходного ответа?

Если CoreData - лучшая ставка, как я могу кэшироватьмой ответ API там?

1 Ответ

0 голосов
/ 23 мая 2019

Вы можете просто save/fetch ответить в UserDefaults в форме 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 для хранения своего ответа. Но, похоже, вашему делу это не нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...