如何动态地在swift字典中添加值

时间:2014-08-20 06:14:13

标签: ios swift dictionary collections ios8

我已经在我的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值的正确方法是什么?

1 个答案:

答案 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