繁体   English   中英

在Swift中循环创建字典

[英]Create a dictionary in a loop in Swift

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

var newItems = [:]

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

不使用第二个值

var newItems : [String:String] = [:]

for i in 1..10{
  newItems[i.description] = "A new item" 
}

有关更多信息, https://www.weheartswift.com/dictionaries/

原始代码的问题在于字典仅具有一个键,因此此构造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"]

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM