我已经在我的swift课程中声明了一个字典,如下所示:
var profileDetail = Dictionary<String, String>()
但我无法在其中添加值。 如果我尝试跟随它,它只存储最后一个值。
profileDetail = [profileItem[1]:values.valueForKey("middle_name") as String]
profileDetail = [profileItem[2]:values.valueForKey("last_name") as String]
profileDetail = [profileItem[3]:values.valueForKey("gender") as String]
profileDetail = [profileItem[4]:values.valueForKey("birth_date") as String]
profileDetail = [profileItem[5]:"\(add1),\(add2)"]
profileDetail = [profileItem[6]:values.valueForKey("email") as String]
或者以下给出了错误的密钥异常:
ProfileDetail.setValue(values.valueForKey("first_name") as String, forKey: profileItem[0])
ProfileDetail.setValue(values.valueForKey("middle_name") as String, forKey: profileItem[1])
ProfileDetail.setValue(values.valueForKey("last_name") as String, forKey: profileItem[2])
ProfileDetail.setValue(values.valueForKey("gender") as String, forKey: profileItem[3])
ProfileDetail.setValue(values.valueForKey("birth_date") as String, forKey: profileItem[4])
ProfileDetail.setValue("\(add1),\(add2)", forKey: profileItem[5])
ProfileDetail.setValue(values.valueForKey("email") as String, forKey: profileItem[5])
我审阅了苹果公司的医生,但没有找到任何有用的东西。
动态添加Dictionary
值的正确方法是什么?
答案 0 :(得分:2)
在这一行中你要实例化一个字典:
var profileDetail = Dictionary<String, String>()
由profileDetail
变量标识,但在所有其他后续行中,您将该变量重新分配给其他内容。也许这更好地解释了你所犯的错误:
var x: Int = 1
x = 2
x = 3
x = 4
每一行都为同一个变量分配一个新值,因此前一个值会丢失。
我认为你应该用以下内容替换每一行:
profileDetail[profileItem[1]] = values.valueForKey("middle_name") as String
甚至更好,你可以在一个语句中初始化如下:
var profileDetail = [
profileItem[1]: values.valueForKey("middle_name"),
profileItem[2]: values.valueForKey("last_name"),
...
]
如果此词典一旦实例化,则不能将var
更改为let