как добавить объект в NSDictionary относительно ключа

-1

У меня 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

  • 0
    mainDictionary ["businessPhone"] = businessPhoneDic2
  • 0
    Да, я пытался это сделать, но он просто заменил старый словарь новым значением, поэтому, когда я печатаю mainDictionary ["businessPhone"] после обновления, его замена businessPhoneDic на businessPhoneDic2.
Показать ещё 6 комментариев
Теги:
xcode

4 ответа

1
Лучший ответ

По определению вы не можете иметь два значения, сопоставленные с одним и тем же ключом. Следующий код заменит старый ключ:

Swift 3

mainDictionary["businessPhone"] = businessPhoneDic2

Просто используйте новый ключ, если вам нужны оба значения в словаре, или, возможно, сохраните массив словарей в качестве значений:

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

Затем:

mainDictionary["businessPhone"]?.append(businessPhoneDic2)
  • 0
    Я использую этот код var mainDictionary: [String: [NSDictionary]] = ["businessPhone": [businessPhoneDic as NSDictionary]] mainDictionary ["businessPhone"] ?. append (businessPhoneDic2 as NSDictionary) print ("=====", mainDictionary ["businessName"] как AnyObject), но его возвращение <null>
  • 0
    Конечно. У вас нет значения для ключа businessName в вашем mainDictionary. Вы должны вызвать mainDictionary [businessPhone] .first! ["BusinessName"], если словарь businessPhoneDic имеет ключ businessName
Показать ещё 1 комментарий
1

Прежде всего , не используйте 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]
}
0

Swift 3.x

//Инициализация словаря

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

//Добавить новый ключ со значением

dict["email"] = "[email protected]"
print(dict)
0

Попробуй это:

 mainDictionary["your key"] = businessPhoneDic2 as AnyObject // cast as per suggestions
  • 0
    почему отказано в голосовании?
  • 0
    Да, я пытался это сделать, но он просто заменил старый словарь новым значением, поэтому, когда я печатаю mainDictionary ["businessPhone"] после обновления, его замена businessPhoneDic на businessPhoneDic2.
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню