Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Swift中遍历每个键都有多个值的字典_Swift_Loops_Dictionary_For In Loop - Fatal编程技术网

如何在Swift中遍历每个键都有多个值的字典

如何在Swift中遍历每个键都有多个值的字典,swift,loops,dictionary,for-in-loop,Swift,Loops,Dictionary,For In Loop,我使用这段代码的目标是遍历一个字典,其中键是一个特定的学院,这些键的值是学院的颜色。当用户通过在文本字段中键入来选择学院时,背景将更改为学院颜色。当我只使用一种颜色在字典中迭代时,效果很好,但现在我引入了第二种颜色,我的代码不断出现错误“For in loop requires'[UIColor]'以符合“Sequence”,下面是我的代码。我将非常感谢任何帮助 对于我的字典,我使用颜色文字来轻松选择颜色: var collegeDict = ["UCLA": [#color

我使用这段代码的目标是遍历一个字典,其中键是一个特定的学院,这些键的值是学院的颜色。当用户通过在文本字段中键入来选择学院时,背景将更改为学院颜色。当我只使用一种颜色在字典中迭代时,效果很好,但现在我引入了第二种颜色,我的代码不断出现错误“For in loop requires'[UIColor]'以符合“Sequence”,下面是我的代码。我将非常感谢任何帮助

对于我的字典,我使用颜色文字来轻松选择颜色:

var collegeDict = ["UCLA": [#colorLiteral(red: 0.2196078449, green: 0.007843137719, blue: 0.8549019694, alpha: 1), #colorLiteral(red: 0.9529411793, green: 0.6862745285, blue: 0.1333333403, alpha: 1)], "Stanford": [#colorLiteral(red: 0.3098039329, green: 0.01568627544, blue: 0.1294117719, alpha: 1), #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1)]]
这是出现错误的迭代器:

    @IBAction func Button1Pressed(_ sender: Any) {
        for (key, colors) in collegeDict {
            for (primaryColor, secondaryColor) in colors {
            if collegeName == textField1.text {
                self.View1.backgroundColor = primaryColor
                self.Button1.backgroundColor = primaryColor
for(primaryColor,secondaryColor)in colors
实际上是
(索引,元素)
语法,但是您必须添加
.enumerated()

然而,即使使用
enumerated()
,语法也毫无意义

等等,这样做(有点)道理

@IBAction func Button1Pressed(_ sender: Any) {
    for (_, colors) in collegeDict {
        for (index, color) in colors.enumerated() {
        if collegeName == textField1.text {
            switch index {
                case 0: self.View1.backgroundColor = color
                case 1: self.Button1.backgroundColor = = color
                default: break
            }
            

这是一个严肃的解决方案:

colors
是一个数组,您可以使用索引订阅获取第一个和第二个元素

 @IBAction func Button1Pressed(_ sender: Any) {
    for (_, colors) in collegeDict {
        if collegeName == textField1.text {
            self.View1.backgroundColor = colors[0]
            self.Button1.backgroundColor = colors[1]

实际上,如果collegeName==textField1.text{与循环无关,那么比较
也没有意义。

@MarcE如果它对您有效,请接受答案。
 @IBAction func Button1Pressed(_ sender: Any) {
    for (_, colors) in collegeDict {
        if collegeName == textField1.text {
            self.View1.backgroundColor = colors[0]
            self.Button1.backgroundColor = colors[1]