У меня 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 для ключевого "businessPhone". Как я могу это сделать в Swift 3
По определению вы не можете иметь два значения, сопоставленные с одним и тем же ключом. Следующий код заменит старый ключ:
Swift 3
mainDictionary["businessPhone"] = businessPhoneDic2
Просто используйте новый ключ, если вам нужны оба значения в словаре, или, возможно, сохраните массив словарей в качестве значений:
var mainDictionary : [String : [NSDictionary]] = ["businessPhone" : [businessPhoneDic]]
Затем:
mainDictionary["businessPhone"]?.append(businessPhoneDic2)
Прежде всего , не используйте MSMutable...
collection в Swift.
Использовать собственный словарь Swift
let emailDic = ["email" : ""]
Во-вторых, аннотировать словарь с разными типами как [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
//Инициализация словаря
var dict = ["name": "Foo", "surname": "Bar"]
//Добавить новый ключ со значением
dict["email"] = "[email protected]"
print(dict)
Попробуй это:
mainDictionary["your key"] = businessPhoneDic2 as AnyObject // cast as per suggestions