2015-10-19 17 views
5

numaralı sürümde 'let' sabiti sabittir. Bu nedenle temel olarak 2 etiket içinde 20'ye kadar 2 rastgele sayı atamaya çalışıyorum ve kullanıcının doğru sonucu bulması gerekecek. Cevabın doğru olup olmadığına göre farklı bir görünüm belirecek ve bu 10 kez gerçekleşecektir. Sorun şu ki, kullandığım "i" sayacı üzerinde bir hata alıyorum ve değişken olarak bildirsem de, bir sabit olduğunu söyleyen bir hata alıyorum.Değere atanamıyor: 'i',

@IBAction func submit(sender: AnyObject) { 
    //declarations 
    var i: Int //counter for 10 repetitions 
    var result = 0 
    for i in 0..<10 { 
     //generate 2 random numbers up to 20 
     var rn1 = arc4random_uniform(20) 
     var rn2 = arc4random_uniform(20) 
     //assign the rundom numbers to the labels 
     n1.text = String(rn1) 
     n2.text = String(rn2) 
     result = Int((rn1) + (rn2)) 
     //show respective view based on if answer is correct or not 
     if answer.text == String(result) { 
      i = i + 1 //here i get the error: cannot assign to value 'i' is a 'let' constant 
      performSegueWithIdentifier("firstsegue", sender: self) 
     }else { 
      performSegueWithIdentifier("wrong", sender: self) 
     } 
    } 
} 
+0

Koşul eşleşiyorsa, döngüyü bir kez mi kırıyorsunuz? –

cevap

18

Kullanım for var i in 0..<10 { hatayı aşmak için.

for i in 1..<10 yılında i önceki beyanı geçersiz kılar let varsayılan ve for kapsamında i bir yeniden bildirilmiş etkili olduğunu. Mantığınızın ne yaptığını hiçbir fikriniz yok, aklın ortasındaki i değerini artırın. Bu döngü yürütülür kez sayısında herhangi bir fark yaratacak - aşağıya bakın:

var i: Int = -1 
print("Outer scope, i=\(i)") // i=-1 
for var i in 0..<10 { // Will be executed 10 times, regardless of what you do to i in the loop 
    print("Inner scope, i=\(i)") // i=0...9, including all 
    if i == 2 { 
     i = i + 10 
     print("Inner, modified i=\(i)") // i=12 
    } 
} 
print("Outer scope, i=\(i)") // i=-1 

/* Complete output: 
Outer scope, i=-1 
Inner scope, i=0 
Inner scope, i=1 
Inner scope, i=2 
Inner, modified i=12 
Inner scope, i=3 
Inner scope, i=4 
Inner scope, i=5 
Inner scope, i=6 
Inner scope, i=7 
Inner scope, i=8 
Inner scope, i=9 
Outer scope, i=-1 
*/ 

önemli nokta bir Swift for i in döngü değil C for (i=0; i<10; i++) döngü olmasıdır.

+0

Çok teşekkür ederim Grimxn, cevabın bana yardım etti :) –

+0

Bir şey değil. Bu yüzden Stack Overflow'ta yaşıyorum! – Grimxn

İlgili konular