Проблема в том, что метод bool(forKey:)
всегда будет возвращать false
, если для ключа нет значения, поскольку он возвращает необязательный Bool
. Альтернативой для проверки на nil является использование UserDefaults
метода object(forKey:)
, который возвращает Any?
Если ваше намерение состоит в том, чтобы просто сохранить массив целых чисел, вы можете расширить UserDefaults и создать вычисляемое свойство с помощью getterи установщик для автоматического сохранения ваших данных:
extension UserDefaults {
var favorites: [Int] {
get { array(forKey: "favorites") as? [Int] ?? [] }
set { set(newValue, forKey: "favorites") }
}
}
UserDefaults.standard.favorites = []
UserDefaults.standard.favorites.append(2)
UserDefaults.standard.favorites.append(7)
UserDefaults.standard.favorites // [2,7]