将元素添加到空字典,然后添加到数组

时间:2020-01-08 15:19:07

标签: ios swift dictionary

我有两个字符串元素。我想将它们添加到字典中,然后最终将字典添加到数组中。我试图这样做。..但是它不起作用...

我像这样做了字典。

var receiverDict = Dictionary<String, Any>()

我有两个字符串。

self.abc_Receiver1 = "test1"

self.abc_Receiver2 = "test2"

我试图像这样将其添加到字典中。

(self.receiverDict["name"]! as AnyObject).add(self.Smat_Receiver1) //HERE IT CRASHES
(self.receiverDict["id"]! as AnyObject).add(self.receiverId1) 

但是它在上面的第一行中崩溃了。

此外,我还制作了一个数组,像这样将上面的字典添加到该数组中...

var arrayOfReceiverNames = [[String: Any]]()

arrayOfReceiverNames.append(self.receiverDict)

但是在向字典本身添加元素时发生崩溃。

4 个答案:

答案 0 :(得分:3)

请,我是斯威夫特。您的字典显然是[String:String]

var receiverDict = Dictionary<String, String>()

然后使用本机Swift术语而不桥接到Objective-C运行时,并且add还是错误的。

receiverDict["name"] = self.Smat_Receiver1
receiverDict["id"] = self.receiverId1

或更简单地一行

let receiverDict = ["name" : self.Smat_Receiver1, "id" : self.receiverId1] 

声明数组也更具体

var arrayOfReceiverNames = [[String: String]]()
arrayOfReceiverNames.append(receiverDict)

答案 1 :(得分:1)

您可以通过执行以下操作来实现它:

var dict = [String:Any]()
var arrayOfDict = Array<[String:Any]>()

dict["name"] = someValue

arrayOfDict.append(dict)

希望有帮助。

答案 2 :(得分:1)

如果您已经知道字符串和值,为什么不直接像下面这样添加它们:

var arrayOfDict : [Dictionary<String,String>] = [["name1":"value1"], ["name2":"value2"]]

如果将它们存储在变量中,只需将字符串替换为变量。

对于您而言,

 self.abc_Receiver1 = "test1"
 self.abc_Receiver2 = "test2"
 var arrayOfReceiverNames : [Dictionary<String,String>] = [["id":self.receiverId1], ["name":self.Smat_Receiver1]]

答案 3 :(得分:1)

如果在创建Smat_Receiver1之前已经为abc_Receiver2Dictionary设置了值,那么您可以简单地使用一个衬垫来创建Dictionary,即< / p>

let receiverDict = ["name": self.Smat_Receiver1, "id": self.abc_Receiver2]

receiverDict的类型将自动推断为[String:String]

现在,用array创建receiverDict

var arrayOfReceiverNames = [[String:String]]()
arrayOfReceiverNames.append(receiverDict)