[英]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.