2017-05-29 53 views
-2

我有NSDictionary,現在我正在試圖添加一個對象在一個特定的key.How可以這樣做嗎?下面是我的代碼。如何添加一個對象到一個NSDictionary相對於一個鍵

let businessPhoneDic = ["locationname" : "", 
           "area" : "", 
           "number" : "", 
           "type" : "", 
         ]; 
let emailDic:NSMutableDictionary? = ["email" : "",]; 

let businessPhoneDic2 = ["locationname" : "hello", 
           "area" : "", 
          "phonenumber" : "", 
           "type" : "", 
         ]; 

var mainDictionary = ["businessPhone" : businessPhoneDic as AnyObject,"email" : emailDic as AnyObject, 
     ]; 

現在我想 「businessPhoneDic2」 添加到mainDictionary關鍵 「商家電話」。如何可以我這樣做,到斯威夫特3

+0

mainDictionary [「businessPhone」] = businessPhoneDic2 – PGDev

+0

是的我正在嘗試,但它只是用新值替換舊字典,所以當我在更新其businessPhoneDic2替換businessPhoneDic後打印mainDictionary [「businessPhone」]。 –

+0

是的,因爲一個字典包含唯一的鍵,只有一個值對應於該鍵。所以你不能存儲單個鍵的多個值。 – PGDev

回答

1

根據定義,你可以沒有兩個值映射到同一個鍵。下面的代碼將取代舊的關鍵:

斯威夫特3

mainDictionary["businessPhone"] = businessPhoneDic2 

只需使用一個新的密鑰,如果你在你的字典需要兩個值,或可能存儲字典的數組作爲值,例如:

var mainDictionary : [String : [NSDictionary]] = ["businessPhone" : [businessPhoneDic]] 

然後:

mainDictionary["businessPhone"]?.append(businessPhoneDic2) 
+0

我使用此代碼 變種mainDictionary:[字符串:[NSDictionary的]] = [ 「商家電話」:[businessPhoneDic作爲的NSDictionary]] mainDictionary [ 「商家電話」] ?.追加(businessPhoneDic2如的NSDictionary) 打印(「== ===「,mainDictionary [」businessName「] as AnyObject) 但它的返回

+0

當然。您的mainDictionary中的關鍵businessName沒有值。您應該調用mainDictionary [businessPhone] .first![「businessName」]授予businessPhoneDic字典有一個businessName鍵 –

+0

哦,我很抱歉。現在它很好。我只是想那個謝謝 –

0

試試這個:

mainDictionary["your key"] = businessPhoneDic2 as AnyObject // cast as per suggestions 
+0

爲什麼會倒下投票? – KKRocks

+0

是的我正在嘗試,但它只是用新值替換舊字典,所以當我在更新BusinessPhoneDic2替換businessPhoneDic後打印mainDictionary [「businessPhone」]時。 –

+0

使用不同的密鑰,因爲businessPhone密鑰已存在。 – KKRocks

1

第一O形f全部不要在Swift中使用MSMutable...集合類型。

使用原生斯威夫特字典

let emailDic = ["email" : ""] 

所有的第二註釋與不同類型的字典作爲[String:Any]

var mainDictionary : [String:Any] = ["businessPhone" : businessPhoneDic, "email" : emailDic] 

如果key businessPhone值是可以追加的數組值。如果它是一個單獨的字典,你必須創建一個數組。

該代碼考慮兩種情況:

let businessPhone = mainDictionary["businessPhone"] 

if var phone = businessPhone as? [[String:Any]] { 
    phone.append(businessPhoneDic2) 
    mainDictionary["businessPhone"] = phone 
} else if let phone = businessPhone as? [String:Any] { 
    mainDictionary["businessPhone"] = [phone, businessPhoneDic2] 
} 
0

斯威夫特3.X

//初始化字典

var dict = ["name": "Foo", "surname": "Bar"] 

//添加一個新的密鑰與值

dict["email"] = "[email protected]" 
print(dict) 
相關問題