在字典中添加和更新为“值”的字典
我想在字典的同一个键中添加多个值。 我有型在字典中添加和更新为“值”的字典
var dic1 = [String:[String:AnyObject]](
dic1.updateValue(["name": cellName,"phone": Phone], forKey: "XYZ")
通过的关键“XYZ”这样的更新值的DIC,但我想在同一个密钥“XYZ”增加更多的价值。 任何人都可以帮我解决这个问题吗?
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;};
}]
非常感谢好友。它不完全是我想要的,但给了我一个想法,我得到了理想的输出。我将它上传为答案 –
@NavjotSingh当答案满足您的要求时,考虑到您提供的信息量,您只需接受它们并注册即可。您还需要了解SO不是个人帮助中心,主要是为什么人们在这里回答的目的是帮助其他人解决您的问题,这就是为什么我们尽可能地概括我们的答案,或者如果您想回答具体然后提供您的具体细节,你没有。请查阅: - http://*.com/help/someone-answers。 – Dravidian
你能帮我按关键字“name”排序这个数组“mutDictionary”吗 –
您需要添加该自定义运算符以使用他的+ =建议'func + =(inh lhs:[Key:Value],rhs:[Key:Value]){ rhs.forEach {lhs [$ 0] = $ 1} }' –
@LeoDabus你能帮我解决这个问题吗?可以通过步骤或任何适合您的方式 –
这将解决错误+ =不能与两个[String:AnyObject]操作数一起使用 –