【发布时间】: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