如何将新元素附加到 swift 中的键值对
how to append new element to key value pair in swift
我有一个包含键字符串和 [issueFieldModal] 数组的键值对
所以我有一个对象元素,它有一个选项卡名称,elementArray 元素有一个键和值 属性
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]
}
但是当我打印出键值对时,只显示最后一个附加项
我认为它会覆盖旧值并在每个循环中设置
谢谢
问题在于 KeyValuePairs
与常规词典不同,它不符合 Hashable
。您不能通过下标分配。您可能重复了 key/value 对。符合RandomAccessCollection
所以通过下标只能取值不能设值
keyValuePair = [element.tabName: issueFieldArray]
有效是因为 KeyValuePairs
符合 ExpressibleByDictionaryLiteral
但您不能附加新的键值对,因为它不符合 RangeReplaceableCollection
。换句话说,您需要在初始化集合时添加所有键值对。
我有一个包含键字符串和 [issueFieldModal] 数组的键值对 所以我有一个对象元素,它有一个选项卡名称,elementArray 元素有一个键和值 属性
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]
}
但是当我打印出键值对时,只显示最后一个附加项
我认为它会覆盖旧值并在每个循环中设置
谢谢
问题在于 KeyValuePairs
与常规词典不同,它不符合 Hashable
。您不能通过下标分配。您可能重复了 key/value 对。符合RandomAccessCollection
所以通过下标只能取值不能设值
keyValuePair = [element.tabName: issueFieldArray]
有效是因为 KeyValuePairs
符合 ExpressibleByDictionaryLiteral
但您不能附加新的键值对,因为它不符合 RangeReplaceableCollection
。换句话说,您需要在初始化集合时添加所有键值对。