gpt4 book ai didi

ios - 将 json 保存到 userDefaults 中

转载 作者:行者123 更新时间:2023-11-29 00:16:29 24 4
gpt4 key购买 nike

这是设置函数

func setSelectedDivisions(_ division:[Division]) {

if (division.count != 0) {
self.userDefaults.set(division.toJSONString(), forKey: "selectedDivisions")
self.userDefaults.synchronize()
}
else{
self.userDefaults.removeObject(forKey: "selectedDivisions")
self.userDefaults.synchronize()
}
}

这是获取函数

func getSelectedDivisions() -> [Division] {

if let json = self.userDefaults.value(forKey: "selectedDivisions"){
print(json)
}

if let json = self.userDefaults.value(forKey: "selectedDivisions") as? Array<Dictionary<String, Any>> {
if json.count != 0{
let divisions = Mapper<Division>().mapArray(JSONArray: json)
if divisions.count != 0{
return divisions
}
}
}
return []
}

在 get 函数中我得到了一个错误,告诉我我的序列化是错误的。这是我试图获取的 json

[{"name":"أ","img":"http://www.smsalmaali.com/images/cclass/21.jpg","name2":"الصف الاول","id1":"21","id2":"1"}]

有什么办法可以解决吗?

最佳答案

我认为这行代码是错误的

if let json = self.userDefaults.value(forKey: "selectedDivisions") as? Array<Dictionary<String, Any>> 

首先需要将json字符串转成数组对象,如下

let data = (self.userDefaults.value(forKey: "selectedDivisions") as! String).data(using: String.Encoding.utf8) as NSData?
if data == nil || data!.length == 0 {
return
} else {
do {
let resultJSON = try JSONSerialization.jsonObject(with: data! as Data, options: .mutableContainers)
if let json = resultJSON as? Array<Dictionary<String, Any>> {
// do something
}
} catch _ {
print("exception ")
}

关于ios - 将 json 保存到 userDefaults 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45193147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com