У меня есть ряд пользовательских настроек, которые я хочу сохранить. Почти все они успешно делают, но два из них не делают. Когда новая сборка выпущена (мое приложение все еще находится в стадии TestFlight), они сбрасываются. Однако они ДЕЙСТВИТЕЛЬНО сохраняются после выхода и повторного запуска приложения.
Все настройки сохраняются и считываются из UserDefaults таким же образом. Единственное отличие, которое я вижу, состоит в том, что два плохих имеют один и тот же пользовательский класс, Favorite
. Но даже если бы проблема была в классе, я не понимаю, почему он работал бы над выходом / повторным запуском, а не обновлением.
Вот как я сохраняю его в applicationDidEnterBackground:
let userSettings = UserDefaults.standard
let JSONencoder = JSONEncoder()
let JSONdecoder = JSONDecoder()
if let encoded = try? JSONencoder.encode(favorites) {
userSettings.set(encoded, forKey: "favorites")
}
И загружаем его:
if let savedFavorites = userSettings.object(forKey: "favorites") as? Data {
if let loadedFavorites = try? JSONdecoder.decode([Favorite].self, from: savedFavorites) {
favorites = loadedFavorites
}
}
Класс Favorite
имеет много свойств, но все они являются стандартными типами (string, bool, int, enum) или другими пользовательскими классами, которые также состоят из стандартных типов.
Я новичок в iOS разработке, поэтому извиняюсь, если это что-то простое, что я пропускаю. Спасибо!