我有一個需要放置在字典中的變量對象集。我試圖將它們添加到字典中的for loop
,但從我理解的字典是不可變的,因此它們需要立即聲明。如何創建未預先確定的項目的字典列表?在Swift中創建循環字典
var newItems = [:]
for item in self.items{
newItems["\(item.key)"]["name"] = "A new item"
}
我有一個需要放置在字典中的變量對象集。我試圖將它們添加到字典中的for loop
,但從我理解的字典是不可變的,因此它們需要立即聲明。如何創建未預先確定的項目的字典列表?在Swift中創建循環字典
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"]
通知辭典檢索返回一個可選的,你必須處理。
這似乎比我現在做的更乾淨。出於某種原因,我無法使用[:[:]]() –
聲明字典。無可否認,它是一個模板。根據你在做什麼,內部字典可能需要'[String:AnyObject]'或'[String:String]'。然後,外層變成'[String:whatevertjheinneroneis]',比如[String:'[String:AnyObject]]' – Feldur
我試過[:[String:AnyObject]]但是出現錯誤「容器中的預期表達式」 –
溶液初始化字典創建另一個詞典
var newItems: [String:[String:AnyObject]]()
大約有10多個屬性分配時是。我只列出一個演示概念 –
如果你是什麼關鍵是你使用這個newItems的一個字符串[item.key.description] –
等一分鐘我會去mi mac幫你 –