在Swift中的循环中创建一个字典

时间:2016-07-23 21:51:54

标签: swift dictionary

我有一组可变的对象需要放在字典中。我试图将它们添加到for loop中的字典中,但是我理解字典是不可变的,因此需要立即声明它们。如何创建未预先确定的项目的字典列表?

var newItems = [:]

for item in self.items{
  newItems["\(item.key)"]["name"] = "A new item" 
}

3 个答案:

答案 0 :(得分:0)

不使用第二个值

https://www.weheartswift.com/dictionaries/

了解更多信息send_keys()

答案 1 :(得分:0)

原始代码的问题是字典只有一个键,因此这个构造newItems["\(item.key)"]["name"]在语法上是不正确的。如果您有固定数量的属性,则可以使用结构并将其放入字典中。但是,当您提出问题时,您需要创建一个字典,其中存储的元素本身是字典。所以,虽然我没有把它放到Xcode中,但它是你需要做的模板:

var newItems = [:[:]]()

for item in self.items {
    var itemDict = [:]()
    for prop in whereeveryourpropertiescomefrom {
        itemDict[prop] = valueforthisproperty
    }
    newItems["\(item.key)"] = itemDict        
}

当然,如果您的属性最初存储在此项唯一的字典中(相当于内部循环),则只需将其直接存储到newItems中。

然后,您可以将内容引用为

let value = newItems["\(item.key)"]?.["property key"]

请注意,字典检索会返回您必须处理的可选项。

答案 2 :(得分:0)

解决方案是在初始化字典时创建另一个字典

var newItems: [String:[String:AnyObject]]()