Swift: 阅读 plist - 如何按键过滤并仅读取和附加值

Swift: Reading plist - How to filter by key and read and append value only

Swift 3

我正在尝试读取一个 plist 文件来更新我的集合视图数组。

我的 menu.plist 有 6 个项目我想读取并附加到我的数组中,该数组使用 .count 更新集合视图。

问题是我无法对字典进行排序。我想将 value 中的字符串附加到我的数组,但按具有文本 "Item 0"、"Item 1" 等的键对传输进行排序。因为数组是无组织的,这使得使用 switch 语句变得更加困难在 didSelectItemAt.

在代码中,我没有使用 key,只是将 value 附加到 mainGroup 数组,但它没有组织,我需要通过 plist key

ViewDidLoad 中的代码

var mainGroup = [String]()

var myDict: NSDictionary?
if let path = Bundle.main.path(forResource: "menu", ofType: "plist") {
    myDict = NSDictionary(contentsOfFile: path)
}
if let dict = myDict {

    print(dict)

    for (_, value) in dict {

        mainGroup.append("\(value)")
    }

    print(mainGroup)
}

Plist

您需要对 dict.keys 数组进行排序,并通过这些排序的键访问值

完整代码

var mainGroup = [String]()

    var myDict: [String:String]?
    if let path = Bundle.main.path(forResource: "menu", ofType: "plist") {
        myDict = NSDictionary(contentsOfFile: path) as? [String:String]
    }
    if let dict = myDict {

        print(dict)

        for key in dict.keys.sorted() {

            mainGroup.append(dict[key]!)
        }



        print(mainGroup)
    }

更新

按照@rmaddy 的说法使用数组

    var mainGroup = [String]()

    var myArray: [String]?
    if let path = Bundle.main.path(forResource: "menu", ofType: "plist") {
        myArray = NSArray(contentsOfFile: path) as? [String]
    }

    print(myArray)