Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将元素添加到空字典,然后添加到数组_Ios_Swift_Dictionary - Fatal编程技术网

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

Ios 将元素添加到空字典,然后添加到数组,ios,swift,dictionary,Ios,Swift,Dictionary,我有两个字符串元素。我想将它们添加到字典中,最后,将字典添加到数组中。我试着这样做…但不起作用 我做了一本这样的词典 var receiverDict=Dictionary() 我拥有的两条字符串是 self.abc\u Receiver1=“test1”& self.abc\u Receiver2=“test2” 我试着把它添加到字典里,就像这样 (self.receiverDict["name"]! as AnyObject).add(self.Smat_Receiver1) //HERE

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

我做了一本这样的词典

var receiverDict=Dictionary()

我拥有的两条字符串是

self.abc\u Receiver1=“test1”
&

self.abc\u Receiver2=“test2”

我试着把它添加到字典里,就像这样

(self.receiverDict["name"]! as AnyObject).add(self.Smat_Receiver1) //HERE IT CRASHES
(self.receiverDict["id"]! as AnyObject).add(self.receiverId1) 
但它在上面的第一行崩溃了

此外,我还制作了一个这样的数组,将上面的字典添加到此数组中,如下所示

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

arrayOfReceiverNames.append(self.receiverDict)


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

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

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

dict["name"] = someValue

arrayOfDict.append(dict)
var dict=[String:Any]()
var arrayOfDict=Array()
dict[“name”]=someValue
arrayOfDict.append(dict)

希望有帮助。

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

var arrayOfDict : [Dictionary<String,String>] = [["name1":"value1"], ["name2":"value2"]]
var arrayOfDict:[Dictionary]=[[“name1”:“value1”],[“name2”:“value2”]]
如果将它们存储在变量中,只需将字符串替换为变量即可

所以在你的情况下

 self.abc_Receiver1 = "test1"
 self.abc_Receiver2 = "test2"
 var arrayOfReceiverNames : [Dictionary<String,String>] = [["id":self.receiverId1], ["name":self.Smat_Receiver1]]
self.abc\u Receiver1=“test1”
self.abc_Receiver2=“test2”
var arrayOfReceiverNames:[字典]=[[“id”:self.receiverId1],“name”:self.Smat_Receiver1]]

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

var receiverDict = Dictionary<String, String>()
或者简单一点

let receiverDict = ["name" : self.Smat_Receiver1, "id" : self.receiverId1] 
声明数组也更具体

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

如果在创建
词典之前,您已经为
Smat\u receiver 1
abc\u receiver 2
设置了值,那么您只需使用一行代码即可创建
词典
,即

let receiverDict = ["name": self.Smat_Receiver1, "id": self.abc_Receiver2]
receiverDict
的类型将自动推断为
[String:String]

现在,使用
receiverDict
as创建
数组

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

self.receiverDict[“name”]=self.Smat_Receiver1;self.receiverDict[“id”]=self.receiverId1
?您可能不应该首先使用字典。如果您有一组固定的键(
id
name
),您可能应该使用
struct
类。这将从根本上简化您的代码(因为不再有
任何
和到处施放),甚至有可能加速它
var arrayOfReceiverNames = [[String:String]]()
arrayOfReceiverNames.append(receiverDict)