Как хранить NSArray в Userdefaults? - PullRequest
0 голосов
/ 11 июня 2018

Вот мой код

var defaultValues = UserDefaults.standard
var json = NSArray()
self.defaultValues.set(json, forKey: "BedData")

Я использовал этот код для хранения строк, и он отлично работает, но когда я пытался сохранить NSArray, он выдает мне эту ошибку «Попытка вставить объект списка не свойств»

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Спасибо за ответы. Ребята. Но я нашел решение

Let json = NSArray()

Сохранить

let data = NSKeyedArchiver.archivedData(withRootObject: json)
            self.defaultValues.set(data, forKey: "Offline-BedData")

И получить:

if let data = self.defaultValues.object(forKey: "Offline-BedData")! as? Data {

                if let dict = NSKeyedUnarchiver.unarchiveObject(with: data) as? NSArray {
                    json = dict
                    print("json\(json)")
                    self.performSegue(withIdentifier: "BedShow", sender: Any?.self)
                }
            }
0 голосов
/ 11 июня 2018

Вы должны кодировать и декодировать для добавления и извлечения данных в / из UserDefault.

func getUserDetail() -> UserDetail? {
    if let decodedData = UserDefaults.standard.object(forKey: AppConstant.userDefaultKey.user_detail) as? Data {
        return try! PropertyListDecoder().decode(UserDetail.self, from: decodedData)
    }
    return nil
}

func setUserDetail(user: UserDetail) {
    UserDefaults.standard.set(try! PropertyListEncoder().encode(user), forKey: AppConstant.userDefaultKey.user_detail)
}
...