2017-05-29 52 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) 
相关问题