2017-03-29 13 views
0

私はTreehouseのプロジェクトのためのすばらしい遊び場で働いています。私は追加のキーを追加することに問題があります:forループ内の辞書に値のペア。ここで私が持っているコードです: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 
      } 
     } 
    } 
} 

は、このメソッドでエラーが発生しませんが、それは「チーム」を追加する必要があります。プレイヤーの辞書に「サメ」などが、そうではありません。助言がありますか?

+0

"チーム"の値を "ラプター"で上書きしています。プレーヤー["Team"] = "NewValue"を行うたびに、これまでの価値を置き換えます。 – apineda

答えて

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が値型であるためです。

experiencedPlayersteamSharksなどの配列に格納されているデータには影響しません。

+0

ああ!私はそれを知らなかった、ありがとう。 –

0

あなたのfor..inの範囲内でプレイヤーがスコープ内に宣言されているためです。だからあなたがそれを修正しようとするとすぐに、このスコープ内でのみ動作します、それはコピーのようです。変更したい場合は、経験したプレイヤーにあなたの変更したオブジェクトを再割り当てする必要があります。

関連する問題