在Swift中使用此词典的结构数组

时间:2016-10-21 09:34:41

标签: arrays swift dictionary struct

我正在帮助解决这个问题:tableViews with dictionary

我能够重现所有。但我需要我的字典是这样的:

var channelsCategorized = [String:[String:Int]]()

现在要使用字典中的每个值进行迭代,上面的链接就是这样做的:

for (key,value) in channelsCategorized{

        structArray.append(channelsStruct(section: key, name: value))

    }

如果我的字典是[String:[String]],那就是[String:[String:Int]]。我需要它添加到struct部分,name和id。我的字典是这样的:[movies:[channelName,idChannel]]

这是我的结构:

struct channelsStruct {

    var section: String!
    var name: [String]!
    var channelId: String!
}

这是我的struct数组:

var structArray = [channelsStruct]()

1 个答案:

答案 0 :(得分:0)

我将以下内容放在一起,这些内容应该说明如何在您的情况下实现这一点。注意我已经包含了一个检查,以便仅在所有值都可用时才创建结构。

let myDictionaryOfDictionaries : [String : [String : String]] = ["Apples" : ["Colour" : "Red", "Type" : "Granny Smith"],
                                             "Oranges" : ["Colour" : "Orange", "Type" : "Seville"]]

struct fruit {
    let name : String
    let colour : String
    let type : String
}

var fruits : [fruit] = [fruit]()

for (key, value) in myDictionaryOfDictionaries {

    if let colour : String = value["Colour"], let type : String = value["Type"] {
        let newFruit = fruit(name: key, colour: colour, type: type)
        fruits.append(newFruit)
    }
}

print(fruits.count) // Outputs 2

for f in fruits {
    print("NAME: \(f.name) COLOUR: \(f.colour) TYPE: \(f.type)") //Outputs NAME: Apples COLOUR: Red TYPE: Granny Smith\n NAME: Oranges COLOUR: Orange TYPE: Seville
}