如何在用户默认值中存储 NSArray?



这是我的代码

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

我使用此代码来存储字符串并且它运行良好,但是当我尝试存储NSArray时,它给了我此错误"尝试插入非属性列表对象">

您必须对 UserDefault 进行编码和解码才能在 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)
}

感谢您的回复 伙计们 但是我已经找到了解决方案

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)
}
}

最新更新