添加到For循环内的字典

时间:2017-03-29 16:05:57

标签: swift loops dictionary for-loop

我正在树屋的一个快速游乐场工作。我在将一个额外的键:值对添加到for循环内的字典时遇到了麻烦。这是我的代码:

var counter = 0
for (var player) in experiencedPlayers {
counter += 1
if counter % 3 == 0 {
    for team in 1...3 {
        switch team {
            case 1:
                teamSharks.append(player)
                player["Team"] = "Sharks"
            case 2:
                teamDragons.append(player)
                player["Team"] = "Dragons"
            case 3:
                teamRaptors.append(player)
                player["Team"] = "Raptors"
            default: break
            }
        }
    }
}

此方法不会出错,但应该将“团队”:“鲨鱼”等添加到播放器的字典中,但事实并非如此。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

在追加player之前,您需要修改player

    switch team {
        case 1:
            player["Team"] = "Sharks"
            teamSharks.append(player)
        case 2:
            player["Team"] = "Dragons"
            teamDragons.append(player)
        case 3:
            player["Team"] = "Raptors"
            teamRaptors.append(player)
        default: break
        }
    }

这是因为player是一种值类型。

请注意,这不会对experiencedPlayers中存储的数据产生任何影响,只会影响teamSharks等数组。

答案 1 :(得分:0)

因为播放器仅在你的for..in范围内声明。因此,只要您尝试修改它,它就会在此范围内起作用,它就像一个副本。如果您想要修改,则需要使用修改后的对象在您的经验丰富的玩家中重新分配您的玩家