Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.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
如何在swift中向键值对追加新元素_Swift_Dictionary_Key_Key Value - Fatal编程技术网

如何在swift中向键值对追加新元素

如何在swift中向键值对追加新元素,swift,dictionary,key,key-value,Swift,Dictionary,Key,Key Value,我有一个键值对,其中包含键字符串和[issueFieldModal]数组 所以我有一个object元素,它有一个e tab name,elementArray元素有一个key和value属性 var keyValuePair = KeyValuePairs<String, [ISSUEFieldModal]>() var issueFieldArray = [ISSUEFieldModal]() for element in elements { for newElement in

我有一个键值对,其中包含键字符串和[issueFieldModal]数组 所以我有一个object元素,它有一个e tab name,elementArray元素有一个key和value属性

var keyValuePair = KeyValuePairs<String, [ISSUEFieldModal]>()
var issueFieldArray = [ISSUEFieldModal]()
for element in elements {
 for newElement in element{
  let issueField = ISSUEFieldModal(newElement.key, newElement.value)
  issueFieldArray.append(issueField)
  }
 keyValuePair = [element.tabName: issueFieldArray]
}
var keyValuePair=KeyValuePairs()
变量issueFieldArray=[ISSUEFieldModal]()
对于元素中的元素{
对于元素中的新元素{
让issueField=ISSUEFieldModal(newElement.key,newElement.value)
issueFieldArray.append(issueField)
}
keyValuePair=[element.tabName:issueFieldArray]
}
但是当我打印出键值对时,只有最后一个追加显示
我认为它覆盖了旧的值并在每个循环中设置


谢谢

问题在于它们的
KeyValuePairs
与常规词典不同,它不符合
Hashable
。不能通过下标进行赋值。您可能有重复的键/值对。它符合
RandomAccessCollection
,因此通过下标只能获取但不能设置值


keyValuePair=[element.tabName:issueFieldArray]
之所以有效,是因为
KeyValuePairs
符合
ExpressibleByDictionaryTerral
但不能追加新的键值对,因为它不符合
RangeReplacableCollection
。换句话说,在初始化集合时,您需要添加所有键值对。

问题是它们的
KeyValuePairs
与常规字典不同,它不符合
哈希表。不能通过下标进行赋值。您可能有重复的键/值对。它符合
RandomAccessCollection
,因此通过下标只能获取但不能设置值


keyValuePair=[element.tabName:issueFieldArray]
之所以有效,是因为
KeyValuePairs
符合
ExpressibleByDictionaryTerral
但不能追加新的键值对,因为它不符合
RangeReplacableCollection
。换句话说,在初始化集合时需要添加所有键值对。

因为您总是在for循环中设置
keyValuePair=[element.tabName:issueFieldArray]
。您可能希望执行以下操作:
keyValuePair[element.tabName]=issueFieldArray
。这应该是一个答案。@AndrewVergunov我不这么认为,因为没有办法通过设置键值对元素subscript@LoVo我认为您不能像那样下标键值对,因为您总是在for循环中设置
keyValuePair=[element.tabName:issueFieldArray]
。您可能希望执行以下操作:
keyValuePair[element.tabName]=issueFieldArray
。这应该是一个答案。@AndrewVergunov我不这么认为,因为无法通过设置键值对元素subscript@LoVo我想你不能像那样用键值对下标