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

我已经在我的swift类中声明了一个字典,如下所示:

var profileDetail = Dictionary()

但是我无法在其中添加值。 如果我尝试跟随,它只存储最后一个值。

 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] 

或者以下给出了错误的密钥exception:

 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中添加值的正确方法是什么?

在这一行中,您将实例化一个字典:

 var profileDetail = Dictionary() 

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