我有一个John [….]
John [….]
John [….]
Jahn [….]
Jaja [….]
laja [….]
…
,它是一个词典数组。 (根是数组)。
每个dic肯定有2个值:plist
和name
为icon
。
但是其中有些具有更多的键/值,有些没有。
我正在尝试将数组读入结构:
Strings
我读了字典,如何阅读字典数组以及如何设置结构。
如何解决某些dic具有其他键没有的键?
答案 0 :(得分:2)
第一个问题:
我阅读了字典,如何阅读字典数组以及如何设置结构。
1/3
就这么简单!
答案 1 :(得分:1)
如果要使用字典数组,则无需创建自己的Codable
类。数组和字典已经实现了Codable
。
只需:
func functionsStruct() -> [[String: String]] {
let url = Bundle.main.url(forResource: "FunctionsList", withExtension: "plist")!
let data = try! Data(contentsOf: url)
let decoder = PropertyListDecoder()
return try! decoder.decode([[String: String]].self, from: data)
}
或者如果字典中包含字符串以外的值,请使用[[String: Any]]
。
然后您可以像这样访问name
和icon
:
let dicts = functionsStruct()
print(dicts[0]["name"])
但是,我不明白您为什么坚持使用字典。我强烈建议您坚持使用Codable
结构。您可以将可选键设置为可选:
struct Config: Decodable {
let name: String
let icon: String
let optionalKey1: String?
let optionalKey2: String?
}
如果键在plist中不存在,则其值为nil。
您需要解码Config
的数组,而不是像以前那样仅解码Config
:
return try! decoder.decode([Config].self, from: data)