【问题标题】:how to append new element to key value pair in swift如何快速将新元素附加到键值对
【发布时间】:2021-06-27 12:04:48
【问题描述】:

我有一个包含键字符串和 [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]
}

但是当我打印出键值对时,只显示最后一个附加项
我认为它会覆盖旧值并在每个循环中设置

谢谢

【问题讨论】:

  • 因为你总是在 for 循环中设置keyValuePair = [element.tabName: issueFieldArray]。你可能想做某事:keyValuePair[element.tabName] = issueFieldArray.
  • 这应该是一个答案。
  • @AndrewVergunov 考虑到无法通过下标设置键值对元素,我不这么认为
  • @LoVo 我认为你不能像这样的键值对那样下标

标签: swift dictionary key key-value


【解决方案1】:

问题在于KeyValuePairs 与常规字典不同,它不符合Hashable。您不能通过下标分配。您可能有重复的键/值对。它符合RandomAccessCollection,所以通过下标只能获取值,不能设置值。

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

【讨论】:

    猜你喜欢
    • 2020-11-23
    • 1970-01-01
    • 2012-10-06
    • 2019-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-05
    • 2016-02-03
    相关资源
    最近更新 更多