2016-04-29 8 views
1

before swift2.0これはforloopステートメントに使用していますが、エラーは表示されませんが、swift3.0にアップグレードするとアプリは常にクラッシュします私はforloop文に使用します。for loop of swift 3.0境界1を超えるインデックス1のエラー[0 .. 0]エラー

for (var i=0; i < results.count; i++) 
       { 
        let single_result = results[i] 
        let id = single_result.valueForKey("id") as! String 
        let name = single_result.valueForKey("name") as! String 
        let address = single_result.valueForKey("address") as! String 
        let mobile = single_result.valueForKey("mobile_number") as! String 
        let email = single_result.valueForKey("email") as! String 
        let gender = single_result.valueForKey("gender") as! String 
        let birth = single_result.valueForKey("birthday") as! String 
        user_id = id 
        gotID = id 
        gotName = name 
        gotAddress = address 
        gotEmail = email 
        gotGender = gender 
        gotMobile = mobile 
        gotBirth = birth 
       } 

イム私は、このループ文(swift3.0)を使用したときにエラーを持つ:

for i in 0.stride(through: results.count, by: 1) 
    for i in 0..<results.count 
+0

あなたはどのようなエラーがありますか? – Thilo

+0

- [__ NSArrayI objectAtIndex:]:インデックス1の範囲を越えて[0 .. 0] ' –

答えて

0

あなたはindex-off-by-one errorを取得しているが。

for i in 0.stride(through: results.count - 1, by: 1) 

- 1

for i in 0.stride(through: results.count, by: 1) 

を交換してください。

+3

この回答はあなたの問題を解決しますが、@nhgrifはforループを使用する方が良い結果のリストを反復しようとしています。私はそれを試してみて、インデックスとしてforループを実装することをお勧めします。 – SamG

+0

@SamG私は完全に同意します。しかし、私の内なる気持ちは、OPはすぐに戻ってこないということです。もし彼がそれでいいなら、私はnhgrifのasnwerを私の中に入れることができます。 –

+0

誰かがこの後に来てそれを見る場合に備えて、良いアイデアかもしれません。彼らにも同様に笑いを使うよう促すかもしれない。また、あなたの答えは間違っていません!彼は確かに彼の問題を解決した、私はちょうど人々ができるだけベストプラクティスを使用するように奨励したい:) – SamG

3

実際に欲しいものが配列の値である場合、整数を反復処理する理由はありません。

使用forからinループ:

for result in results { 
    // do something with result 
} 

for i in 0..<someArray.countを使用してはかなり常にコードのにおいになるだろう。まれにインデックスが必要で、上記のfor - inのループパターンはほぼすべての状況で機能することがわかります。

:あなたは、配列を反復処理したいとあなたは、あなたが arrayenumerateを呼び出すことができが index/ valueペアのシーケンスを生成する値に加えて、インデックスが必要です まれな場合には

for (index, result) in results.enumerate() { 
    // do something with result, which is the value at results[index] 
} 
+0

あなたがそれで大丈夫なら、あなたの答えを私の中に入れることができます。しかし、私は受け入れられた答えを変更することはできません。 –

+0

私はそれが特に適切であるとは思わないでしょう... – nhgrif

関連する問題