更改了与评论相关的内容: 所以我现在在ViewDidLoad上:
let itemsListJson:String = "jsons/items"
guard let urlItems = Bundle.main.url(forResource: itemsListJson, withExtension: "json") else { return }
do{
let dataItems = try Data(contentsOf: urlItems)
let jsonItems = try JSONSerialization.jsonObject(with: dataItems, options: .mutableContainers)
guard let arrayItems = jsonItems as? [Any] else {return}
dump(jsonItems)
UserDefaults.standard.set(arrayItems, forKey: "items")
UserDefaults.standard.synchronize()
}
catch{
print(error)
}
打印出我的对象
▿38个元素#0 ▿9个键/值对#1 ▿(2个元素) - 关键:盔甲#2 - 超级:NSString - 超级:NSObject - 价值:3#3 - 超级:NSString - 超级:NSObject ▿(2个元素) - key:min_damage#4 - super:NSMutableString - 超级:NSString - 超级:NSObject - 值:0#5 - 超级:NSString - 超级:NSObject ▿(2个元素) - 关键:id#6 - 超级:NSString - 超级:NSObject - 值:1#7 - 超级:NSString - 超级:NSObject ▿(2个元素) - 关键:速度#8
当我尝试使用时:
guard let arrayItems = jsonItems as? [String: Any] else {return}
我没有结果。
如何将数据保存为字典。我只是无法解决这个问题,并且有些例子太旧而无法使用。请帮忙
答案 0 :(得分:0)
以下两行代码显示了您的问题:
guard let array_items = json_items as? [Any] else {return}
let zitems:Dictionary = (UserDefaults.standard.value(forKey: "items") as? [String:Any])!
在第一个中,您将json_items声明为[Any]
,并将其写入键" items"。在第二个,你读"项目"现在希望它是[String:Any]
。