我正在编写一个部分依赖于大型数组字典的Swift应用程序。摘录如下:
let arithmeticalDict:Dictionary<String, Array <String>> =
[
"1116": [],
"1117": [],
"1118": ["(1+1+1)*8"],
"1128": ["1*(1 + 2)*8","(1 + 2)/(1/8)"]
]
我认为将它放入JSON资源可能更容易管理,这是我以前用于小型简单字典的技术。这种情况较大,715个条目占用磁盘上约370Kb。但是在这种情况下,我遇到了两个问题:
如何在JSON文件中指定字典中的每个键对应一个字符串数组(其中数组的长度不规则,有些可能不包含任何内容)?
如何在Swift中加载JSON文件到适当的<String, Array <String>>
字典?
答案 0 :(得分:2)
1-您的字典已经输入,它是Dictionary<String, Array <String>>
,因此您只需使用NSJSONSerialization来创建JSON数据:
do {
let jsonData = try NSJSONSerialization.dataWithJSONObject(arithmeticalDict, options: NSJSONWritingOptions.PrettyPrinted)
// now you can export "jsonData" to a file
} catch {
print(error)
}
2-要解码保存的JSON对象,请再次使用相同的类型:
do {
if let dict = try NSJSONSerialization.JSONObjectWithData(jsonData, options: []) as? [String:[String]] {
print(dict) // ["1118": ["(1+1+1)*8"], "1117": [], "1116": [], "1128": ["1*(1 + 2)*8", "(1 + 2)/(1/8)"]]
}
} catch {
print(error)
}