Arrays 在Swift 2.2中迭代数组并将元素添加到空字典中

Arrays 在Swift 2.2中迭代数组并将元素添加到空字典中,arrays,swift,for-loop,dictionary,Arrays,Swift,For Loop,Dictionary,我有一个颜色数组,但数组中的元素数量可以更改。例如,我可能一天有一种颜色,但第二天有三种颜色。如何迭代数组,然后将元素添加到空字典中 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",

我有一个颜色数组,但数组中的元素数量可以更改。例如,我可能一天有一种颜色,但第二天有三种颜色。如何迭代数组,然后将元素添加到空字典中

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?
}

要解决此问题,请尝试使用以下方法:

for color in colors{
    colorDict["someKey"] = color
}
正如您所看到的,您应该首先为该键分配一些键和值

在我的例子中,键是“someKey”,值是数组中的颜色

如果您没有明确的钥匙数量。使用数组项的索引枚举

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

为什么要使用
词典
?颜色键的值是多少?如果您希望保留至少使用过一次的颜色,则最好使用
Set
?字典要求每个条目都有键和值。你不能只在字典里添加一件事;您需要一个键和一个值。您只有值(或键)。这个问题毫无意义。显示所需输出的示例(生成的字典)。你想做什么?Matt我明白你的意思。你的权利不清楚。我是;I don’我不想把事情复杂化,但我有一个收藏视图。用户可以上传任意数量的颜色名称。我将这些颜色名称添加到一个空数组(colorDict)。一些用户可能会上传1种颜色和其他4种颜色等。一旦颜色添加到数组中,我需要对其进行迭代,并将颜色名称添加到Firebase。颜色名称实际上是值。密钥名称可以是任何内容。我之所以使用字典,是因为Firebase使用键/值对。但它不会在数据库中复制相同颜色的副本吗…当你调用
self.colors=[“红色”、“蓝色”、“橙色”]
self.colors=[“红色”、“蓝色”]将被替换,而不是追加。键/值将仅添加到每个用户。因此,如果Jill上传了1种颜色,那么在她的FB路径上,她只有1个键/值对。如果Jack上传了3种颜色,那么在他的FB路径上,他只有3个键/值对。杰克的3种颜色对吉尔的1种颜色没有影响。collectionView代码和Firebase代码之间有很多代码。我试图让事情简单化。上传所有代码可能会更清晰。尽管奥列格的答案是一个很好的起点。这与只做
colorDict[“someKey”]=colors是一样的。最后一个
是的,你是对的。我只是想让他知道,他需要的只是设置关键点。如果他想获得不止一个元素,他应该使用不同的键。@Oleggordichuk,我应该对代码更清楚一些。但简而言之,颜色名称就是值。我遇到的问题是,由于颜色名称的数量可能会有所不同,我失去的是,我无法拥有预定数量的键名称,因为我不知道将添加多少值。例如,如果我有3个键名,但用户添加了5个颜色名,则会出现崩溃。@labnxx,您可以使用backwords,将对象视为键,将键视为对象,然后如果找不到该对象作为键,则添加it@Knight0fDragon,你失去了我。你能写一个简短的例子吗?