【问题标题】:Swift: Reading plist - How to filter by key and read and append value onlySwift:阅读 plist - 如何按键过滤并仅读取和附加值
【发布时间】:2017-09-19 07:01:41
【问题描述】:

斯威夫特 3

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

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

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

在代码中,我没有使用 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 是字典?看起来应该是一个数组。
  • plist 新手,有什么不同?你可以对数组进行排序
  • 这真的不是 plist 问题。您应该使用最适合您需求的适当数据收集。如果您不了解字典和数组之间的区别,那么我强烈建议您阅读 Dictionary 和 Array 类文档中的概述和/或查看 Swift 书中的Collection Types 部分。

标签: ios swift plist


【解决方案1】:

您需要对 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)

【讨论】:

  • 在这种情况下,似乎不需要使用字典。 plist 应该只是这些值的数组。
  • 也许你是对的,但这正是 OP 所需要的,而且做起来很简单@rmaddy
  • @ReinierMelian 效果很好,谢谢,但是我应该将 plist 从 Dictionary 转换为 Array 吗?
  • 我认为,如果您不需要使用键快速访问任何值,则可以使用数组代替,正如 rmaddy 所说@BroSimple
  • 因为是一个数组,在这种情况下,数组是对象的集合,在 plist 中定义为字符串的对象,您需要阅读 rmaddy 在他的评论中提供的链接以了解有关集合的更多信息,给它一个试试@BroSimple
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-10
  • 1970-01-01
  • 2015-08-18
  • 1970-01-01
  • 2015-09-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多