Прежде всего, пожалуйста, соблюдайте соглашение об именах, согласно которому имена переменных начинаются со строчной буквы, например
var cardColorLogo = [UIColor]()
Во-вторых, не используйте NSData
и NSArray
в Swift. Существуют нативные типы.
Любой небрежно написанный восклицательный знак может привести к сбою приложения .
Ошибка возникает потому, что object(forKey
возвращает nil
, если ключ не существует. Кстати, есть метод data(forKey
с таким же поведением.
Необязательно: привязать результат и вернуть пустой массив при ошибке
func loadColorLogo() {
if let decodedColorsData = UserDefaults.standard.data(forKey: "ColorsKey"),
let colorsArray = NSKeyedUnarchiver.unarchiveObject(with: decodedColorsData) as? [UIColor] {
cardColorLogo = colorsArray
} else {
cardColorLogo = []
}
}