在字典中添加和更新为“值”的字典

在字典中添加和更新为“值”的字典

问题描述:

我想在字典的同一个键中添加多个值。 我有型在字典中添加和更新为“值”的字典

var dic1 = [String:[String:AnyObject]](

dic1.updateValue(["name": cellName,"phone": Phone], forKey: "XYZ") 

通过的关键“XYZ”这样的更新值的DIC,但我想在同一个密钥“XYZ”增加更多的价值。 任何人都可以帮我解决这个问题吗?

+0

您需要添加该自定义运算符以使用他的+ =建议'func + = (inh lhs:[Key:Value],rhs:[Key:Value]){ rhs.forEach {lhs [$ 0] = $ 1} }' –

+0

@LeoDabus你能帮我解决这个问题吗?可以通过步骤或任何适合您的方式 –

+0

这将解决错误+ =不能与两个[String:AnyObject]操作数一起使用 –

 var mutDictionary = [String: NSMutableDictionary]() 
     let keyVar = String(cellName[cellName.startIndex]) 
     if mutDictionary[keyVar] == nil { 
      mutDictionary.updateValue([:], forKey: keyVar) 
      mutDictionary[keyVar]?.setObject(["Name" : cellName, "Phone" : Phone], forKey: cellName) 
     } 
     else{ 
      mutDictionary[keyVar]?.setObject(["Name" : cellName, "Phone" : Phone], forKey: cellName) 
     } 
    print(mutDictionary) 

你的意思是这样吗?

var value = Dict1["XYZ"] 
value["address"] = "AAA BBB CCC 1234" 
Dict1["XYZ"] = value 

如果我已经明白了一个问题:

1)你必须定义一个类,你可以把它里面的许多价值。例如:

var user_location, user_mail, user_name, user_pass, user_urlPicture: String! 

init(user_location: String!, user_mail: String!, user_name: String!, user_pass: String!, user_urlPicture: String!){ 

    self.user_location = user_location 
    self.user_mail = user_mail 
    self.user_name = user_name 
    self.user_pass = user_pass 
    self.user_urlPicture = user_urlPicture 

} 
// DictionaryConvertible protocol methods 
required convenience init?(dict: [String:AnyObject]) { 
    guard let user_location = dict["user_location"] as? String, user_mail = dict["user_mail"] as? String, user_name = dict["user_name"] as? String, user_pass = dict["user_pass"] as? String, user_urlPicture = dict["user_urlPicture"] as? String else { 
     return nil 
    } 
    self.init(user_location: user_location, user_mail: user_mail, user_name: user_name, user_pass: user_pass, user_urlPicture: user_urlPicture) 
} 
var dict:[String:AnyObject] { 
    return [ 
     "user_location": user_location, 
     "user_mail": user_mail, 
     "user_name": user_name, 
     "user_pass": user_pass, 
     "user_urlPicture": user_urlPicture 
    ] 
} 

2)在您( “用户”)类,你可以添加你的价值观:

let user = User(yourLocation, user_mail: yourMail, user_name: yourName, user_pass: yourPass, user_urlPicture: yourUrlPicture) 

一个简单而优雅的解决方案: -

var mutDictionary = [String: NSMutableDictionary]() 

//Initialising your mutDictionary:- 
mutDictionary = ["Fighters" : ["First" : ["NAME" : "The Tigress", "Phone" : "2131231231"]]] 

//Adding a key-hashabale(or in this case String-NSMutableDictionary) pair. 
//`.updateValue` adds a new parent pair to your mutDictionary if your key value is not present if the key is present then it will update that key's value. 
mutDictionary.updateValue(["First" : ["NAME" : "Uruguay", "Phone" : "903192301293"]], forKey: "The Bosses") 
mutDictionary.updateValue(["FirstOfHisKind" : ["NAME" : "Panda", "Phone" : "123454362"]], forKey: "The Dragon Warrior")  

//Appending data to your mutDictionary:- 
mutDictionary["Fighters"]?.setObject(["NAME" : "Guru Shifu", "Phone" : "121212121212"], forKey: "Second") 

print(mutDictionary) 

的输出,你从这里得到这样的东西: -

["Fighters"   : { Second = { NAME = Guru Shifu; 
             Phone = 121212121212;}; 
          First = { NAME = The Tigress; 
             Phone = 2131231231;}; 
           }, 
    "The Bosses"  : {First = { NAME = Uruguay; 
            Phone = 903192301293;}; 
           }, 
    "The Dragon Warrior": {First = { NAME = Panda; 
            Phone = 123454362;}; 
          }] 
+0

非常感谢好友。它不完全是我想要的,但给了我一个想法,我得到了理想的输出。我将它上传为答案 –

+0

@NavjotSingh当答案满足您的要求时,考虑到您提供的信息量,您只需接受它们并注册即可。您还需要了解SO不是个人帮助中心,主要是为什么人们在这里回答的目的是帮助其他人解决您的问题,这就是为什么我们尽可能地概括我们的答案,或者如果您想回答具体然后提供您的具体细节,你没有。请查阅: - http://*.com/help/someone-answers。 – Dravidian

+0

你能帮我按关键字“name”排序这个数组“mutDictionary”吗 –