0

因此,我有一个 plist,其中包含我想在我的项目中访问的许多项目。plist 是一个项目数组,这些项目又是字符串类型的字典:字符串(Item1 -> “name”:“somename”,“description”:“somedescription”)

我只想访问我的项目的名称值,并显示在一个数组中。我设法使用以下代码检索了 plist 中的所有键值对:

let path = Bundle.main.path(forResource: "PlistName", ofType: "plist")
let dict = NSArray.init(contentsOf: URL.init(fileURLWithPath: path!)) as! [[String:String]]

通过使用 print(dict) 我可以将所有内容打印到控制台,但是就像我说的那样,我只想要数组中项目的名称。

最让我困惑的是dict等于[[String:String]]类型的NSArray。我不明白数组如何是 String:String 类型的。这对我来说就像一本字典。我尝试将 NSArray 更改为 NSDictionary,但这给了我一个错误提示

“从'NSDictionary'中投射?到不相关的类型 '[[String : String]]' 总是失败”

我也无法利用 dict 的键或值。

4

2 回答 2

0
let oneDict = dict[0]

返回一个字典,如果你真的想要一个字典的数组,请执行以下操作:

let array = [oneDict]
于 2019-10-04T05:01:56.457 回答
0

map您可以使用or函数提取特定键的值compactMap,在这种情况下,我使用compactMap以防其中一个字典不包含名称

let arrayOfDictionaries = [["name": "a", "some": "x"],
                           ["name": "b", "some": "y"],
                           ["some": "z"],
                           ["name": "c"]]

let names = arrayOfDictionaries.compactMap {$0["name"]}
于 2019-10-04T07:05:49.593 回答