Ios 如何向NSDictionary中添加与键相关的对象

Ios 如何向NSDictionary中添加与键相关的对象,ios,swift,xcode,Ios,Swift,Xcode,我有一个NSDictionary,现在我正试图在一个特定的键中添加一个对象。我该怎么做?下面是我的代码 let businessPhoneDic = ["locationname" : "", "area" : "", "number" : "", "type" : "",

我有一个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”添加到主词典中的键“businessPhone”。如何将其添加到Swift 3中

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

根据定义,不能将两个值映射到同一个键。以下代码将替换旧钥匙:

Swift 3

mainDictionary["businessPhone"] = businessPhoneDic2
如果您的字典中需要两个值,只需使用一个新键,或者可以将字典数组存储为如下值:

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


首先,不要在Swift中使用
MSMutable…
集合类型。

使用本地Swift字典

let emailDic = ["email" : ""]
var dict = ["name": "Foo", "surname": "Bar"]
第二,用不同类型的字典注释为
[String:Any]

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

如果键
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]
}

Swift 3.x

//初始化字典

let emailDic = ["email" : ""]
var dict = ["name": "Foo", "surname": "Bar"]
//添加具有值的新键

dict["email"] = "foo.bar@email.com"
print(dict)

mainDictionary[“businessPhone”]=businessPhoneDic2是的,我正在尝试,但它只是用新值替换旧字典,所以当我用businessPhoneDic2更新它的replace businessPhoneDic后打印mainDictionary[“businessPhone”]时。是的,因为字典包含唯一键,并且只有一个对应于该键的值。因此,您不能为单个键存储多个值。是的,我想在前面的词典中为添加另一个值businessPhoneDic2和businessPhoneDic2包含相同的键值对。同样的逻辑,只允许唯一的键值对。为什么要进行向下投票?是的,我尝试过,但它只是用新值替换旧字典,所以当我打印mainDictionary[“businessPhone”]将其替换为businessPhoneDic2后,请使用不同的键,因为businessPhone键已存在。因此,如何合并两个字典并更新该特定键的字典?是否要将现有字典与新字典合并?我使用以下代码var mainDictionary:[字符串:[NSDictionary]]=[“businessPhone”:[businessPhoneDic作为NSDictionary]]mainDictionary[“businessPhone”]?.append(businessPhoneDic2作为NSDictionary)打印(===”,mainDictionary[“businessName”]作为AnyObject),但它当然会返回。您的mainDictionary中没有关键字businessName的值。您应该调用mainDictionary[businessPhone]。首先[“businessName”]就算businessPhoneDic字典有businessName键哦,很抱歉。是的,现在很好。我只想要一个,谢谢