我有一组可变的对象需要放在字典中。我试图将它们添加到for loop
中的字典中,但是我理解字典是不可变的,因此需要立即声明它们。如何创建未预先确定的项目的字典列表?
var newItems = [:]
for item in self.items{
newItems["\(item.key)"]["name"] = "A new item"
}
答案 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]]()