У меня есть эта универсальная функция для сохранения в NSUserDefaults, обычно она работает, но теперь я хочу сохранить логическое значение и получаю ошибку. Я ничего не смог найти и не понимаю, почему это не работает.
extension UserDefaults {
func saveUserDefaults<T: Codable>(withKey key: String, myType: T) throws{
do {
let data = try PropertyListEncoder().encode(myType)
UserDefaults.standard.set(data, forKey: key)
print("Saved for Key:", key)
} catch let error {
print("Save Failed")
throw error
}
}
Я называю это так:
try! UserDefaults().saveUserDefaults(withKey: "String", myType: false)
Это ошибка, которую я получаю. Я знаю, что есть другой способ сохранить логические значения, но мне интересно, почему он не работает так?
Тема 1: Неустранимая ошибка: 'попробуй!' Выражение неожиданно вызвало ошибку:
Swift.EncodingError.invalidValue (ложь,
Swift.EncodingError.Context (codingPath: [], debugDescription:
Msgstr "Bool верхнего уровня, закодированный как фрагмент списка свойств числа.",
underError: nil))
Спасибо!