【问题标题】:Iterate over Array and add element to empty dictionary in Swift 2.2在 Swift 2.2 中迭代数组并将元素添加到空字典
【发布时间】:2017-01-15 07:40:35
【问题描述】:

我有一个颜色数组,但数组中的元素数量可以改变。例如,我可能 1 天有 1 种颜色,但第二天有 3 种颜色。如何遍历数组,然后将元素添加到空字典?

var colors = [String]()
var colorDict = [String: AnyObject]()

//day1 the array has 2 colors
self.colors = ["red", "blue"]

//day2 the array has 3 colors
self.colors = ["red", "blue", "orange"]

//day3 the array has 1 color
self.colors = ["blue"]

//regardless of which day it is I need to iterate over the array and add whatever is inside to the dictionary
for color in self.colors{
//how would I add elements to self.colorDict?
}

【问题讨论】:

  • 为什么要使用Dictionary?它将为颜色键保留什么值?如果您希望保留至少使用过一次的颜色,最好使用Set
  • 字典需要每个条目的键和值。您不能只在字典中添加一件事;你需要一个键一个值。您只有值(或只有键)。这个问题没有意义。显示所需输出的示例(结果字典)。你想做什么?
  • 马特 我明白你的意思。你的权利不清楚。我没有试图克服复杂,但我有一个collectionView。用户可以上传任意数量的颜色名称。我将这些颜色名称添加到一个空数组(colorDict)中。一些用户可能会上传 1 种颜色和其他 4 种颜色等。将颜色添加到数组后,我需要对其进行迭代并将颜色名称添加到 Firebase。颜色名称实际上是值。键名可以是任何东西。我使用字典的原因是因为 Firebase 使用键/值对。
  • 但它不会在你的数据库中复制相同的颜色吗......当你调用self.colors = ["red", "blue", "orange"] 时,self.colors = ["red", "blue"] 的值将被替换而不是附加......
  • 键/值只会添加到每个单独的用户。因此,如果 Jill 上传了 1 个颜色,那么在她的 FB 路径上,她将只有 1 个键/值对。如果杰克上传了 3 种颜色,那么在他的 FB 路径上,他将只有 3 个键/值对。 Jack 的 3 种颜色对 Jill 的 1 种颜色没有影响。 collectionView 代码和 Firebase 代码之间有很多代码。我试图让事情变得简单。上传所有代码可能会更清楚。虽然 Oleg 的回答是一个很好的起点。

标签: arrays swift for-loop dictionary


【解决方案1】:

为了解决问题,请尝试使用这种方法:

for color in colors{
    colorDict["someKey"] = color
}

如您所见,您应该首先分配一些键,然后为该键分配值。

在我的情况下,键是“someKey”,值是数组中的颜色。

如果您没有明确数量的键。使用数组项的索引进行枚举。

for (index, element) in colors.enumerate() {
     colorDict[String(index)] = element
}

【讨论】:

  • 这和刚才做colorDict["someKey"] = colors.last是一样的
  • 是的,你是对的。我只是表明他所需要的只是设置密钥。如果他想获得超过 1 个元素,他应该使用不同的键。
  • @OlegGordiichuk,我应该对代码更清楚。但简而言之,颜色名称就是值。我遇到的问题是,由于颜色名称的数量可能会有所不同,所以我失去的是我无法拥有预定数量的键名,因为我不知道将添加多少个值。例如,如果我有 3 个键名,但用户添加了 5 个颜色名,则会发生崩溃。
  • @labnxx,你可以做backwords,把你的对象当作key,把你的key当作对象,然后如果找不到对象作为key,添加它
  • @Knight0fDragon,你失去了我。你能写一个简短的例子吗?
猜你喜欢
  • 2016-11-30
  • 2016-05-27
  • 2014-09-12
  • 1970-01-01
  • 1970-01-01
  • 2014-07-23
  • 1970-01-01
  • 2020-02-19
相关资源
最近更新 更多