如何从字典数组中提取键值对? Swift 2.0

时间:2016-03-20 16:05:08

标签: swift

我有一个已从prepareForSegue传递给Table View Controller的arrayOfDictionaries。

我想提取键值对,并将它们保存在一个新的arrayToDisplay对象中。

我在viewWillAppear中初始化了我的集合数据模型,但我可以使用loadData函数的一些帮助以及如何将数据放入新的arrayToDisplay

表视图控制器:

// data model
var collection: Collection!
var arrayToDisplay = [String: AnyObject]()

// data from previous controller, data is there
var arrayOfDictionaries = [[String: AnyObject]]()

viewWillAppear()
collection = Collection(id: "", photo: "", one: 0, two: 0, three: 0)
loadData()

func loadData() {

   for dict in arrayOfDictionaries {

        for (key, value) in dict {

             if key == "photo" {
                 self.collection!.photo = value as! String
                 arrayToDisplay += [key: value]
             }

             else if key == "id" {
                 self.collection!.id = value as! String
                 arrayToDisplay += [key: value]
             }

             else if key == "one" {
                    ...

我遇到的一个问题是“密钥”在从一个字典更改为下一个字典时不会改变。

有任何帮助吗? 感谢

3 个答案:

答案 0 :(得分:1)

我能够用switch子句

来解决这个问题
func loadData() {

    for dict in arrayofDict {

          for (key, value) in dict {

                switch key {

                case "photo":
                ...
                case "id""
                ...
          }

希望这有助于某人!

答案 1 :(得分:0)

我做了一个小测试课,试试这个。似乎工作正常。也许我不明白你的期望。

class ArrayDictTest {
    // data from previous controller, data is there
    var arrayOfDictionaries = [[String: AnyObject]]()
    var arrayToDisplay = [String: AnyObject]()

    func setup() {
        arrayOfDictionaries.append(["photo" : "some photo 1", "id" : "199"])
        arrayOfDictionaries.append(["photo" : "some photo 2", "id" : "299"])
        arrayOfDictionaries.append(["photo" : "some photo 3", "id" : "399"])
    }


    func loadData() -> [String]
    {
        // capture what happened
        var toReturn = [String]()
        for dict in arrayOfDictionaries {

            for (key, value) in dict {
                print(key)
                toReturn.append(key)
                if key == "photo" {
    //                self.collection!.photo = value as! String
                    arrayToDisplay[key] = value
                }

                else if key == "id" {
    //                self.collection!.id = value as! String
                    arrayToDisplay[key] = value
                }
            }
        }
        return toReturn
    }
}

let mytest = ArrayDictTest()
mytest.setup()
mytest.loadData()

什么是收集?

答案 2 :(得分:-1)

删除其他

if key == "photo" {
    self.collection!.photo = value as! String
    arrayToDisplay += [key: value]
}

if key == "id" {
    self.collection!.id = value as! String
    arrayToDisplay += [key: value]
}