Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «Попытка вставить объект списка, не относящийся к свойствам - PullRequest
0 голосов
/ 04 ноября 2019

Я перепробовал все предложения из Интернета.

Я пытаюсь сохранить массив словарей в пользовательских настройках по умолчанию.

let tokenInfo: [String: Any] = ["data": response?.data as Any, "startDate": response?.startDate as Any, "endDate": response?.endDate as Any]
{
 if error == nil
    userDefModel().token = tokenInfo
}

В классе userDefModel

var token: [String: Any]? {
    set {
        UserDefaults.standard.set(newValue, forKey: "token")
    }
    get {
        return UserDefaults.standard.value(forKey: "token") as? [String: Any] ?? [:]
    }
}

1 Ответ

0 голосов
/ 04 ноября 2019

Эта ошибка из-за ваших элементов словаря, попробуйте распечатать словарь перед установкой его в токен.

Я думаю, что проблема может быть в данных, вам нужно преобразовать их перед сохранением в словаре.

NSString(data: response!.data, encoding: NSUTF8StringEncoding)

Другое решение:

// Save
UserDefaults.standard.set(try? PropertyListEncoder().encode(value), forKey: key)

// Retrieve 
if let data = UserDefaults.standard.value(forKey: key) as? Data {
        userData = try? PropertyListDecoder().decode(Profile.self, from: data)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...