2015-10-01 4 views
12

forループ内でguardを使用する正しい方法は何ですか?スイフト2:forループをガードしますか?

for (index,user) in myUsersArray.enumerate() { 

    guard user.id != nil else { 
     print("no userId") 
     //neither break/return will keep running the for loop 
    } 

    if user.id == myUser.id { 

     //do stuff 

    } 
} 
+0

プリント部品は必要ですか?これは 'どこで'のために使うことができます。 –

+0

いいえ、ちょうど "情報"のためにちょっと古いdev-user-accsがまだあるかもしれないということを開発中 – longbow

+0

構文は 'guard let ...'です。あなたが探している単語は 'continue'です。しかし、はい、どこでより良いでしょう。 – Fogmeister

答えて

17

いくつかの条件文を作るためにいくつかの方法があります。

あなたが全体の条件を置くこともできます。あなたがのために内部に何かをチェックして、反復をスキップしたり、ループを停止することができ、各反復

for (index, user) in myUsersArray.enumerate() where check() {} 
for (index, user) in myUsersArray.enumerate() where flag == true {} 

のために呼び出されます。

for (index, user) in myUsersArray.enumerate() { 
    guard check() else { continue } 
    guard flag else { break } 
} 

あなたのケースでは、私はこのような何かの書き込みになります。

for (index, user) in myUsersArray.enumerate() { 
    guard let userId = user.id, userId == myUser.id else { continue } 

    // do stuff with userId 
} 
+0

'true == true'のポイントは何ですか? –

+0

よく見えますが、あなたが何を求めようとしているかを説明する単語を追加することができます。 –

+0

@appzYourLifeこれは、条件付き – Arsen

2
for (index,user) in myUsersArray.enumerate() { 

    guard let userId = user.id else { 
     print("no userId") 
     continue; 
    } 

    if userId == myUser.id { 

     //do stuff 

    } 
} 
3

@Arsensの回答は正しいが、これはわかりやすいと思う。

let ints = [1,2,3,4,5] 

for (index,value) in ints.enumerate() { 

     guard value != 1 else { 
      print("Guarded \(value)") 
      continue 
     } 

     print("Processed \(value)") 
} 
関連する問題