unwrapping sırasında 'nil' bulur. Aşağıdaki gibi görünüyor Swift for-in döngü dizide bulunandan daha fazla öğe geçmeye çalışıyor. ÖrneğinFor-in döngü bir-çok-uzak gider ve
, bu kodu:
C-Style for loop
1
2
3
4
5
6
7
For each loop
1
2
3
4
5
6
7
fatal error: unexpectedly found nil while unwrapping an Optional value
...
Illegal instruction: 4
burada bir şey eksik gerekir:
var list:[Int?] = [1,2,3,4,5,6,7]
print("C-Style for loop")
for var i=0; i<list.count; i++
{
var x:Int = list[i]!
print(x)
}
print("\nFor-in loop")
for var x:Int! in list
{
print(x)
}
bu çıktıyı alır. list.count
, for-in döngüsünün açılmaya çalıştığı öğelerin sayısı değil mi?
Yukarıda gösterildiği gibi, for-in döngüsü, listesini [Int?]
kullanmak yerine, beklemede olmadan beklendiği gibi çalışır.
Ben Swift sürüm 2.1.1'deyim.
Bazı garip davranışlar. Eğer 'listeyi' [Int] 'olarak etiketlerseniz ve' x '' Int? 'Olarak etiketlerseniz, 'for-in' döngüsü sonsuza kadar 'nil' yazdırır. – BallpointBen
@Robert Çalışmanın nasıl çalıştığını anlarsanız bu davranış özellikle garip değildir ... ancak Swift muhtemelen x 'etiketini isteğe bağlı olarak engeller (çünkü bu yalnızca sonsuz bir döngüye neden olabilir). – nhgrif
Neler olduğunu açıklayabilir misiniz? Bu neden sonsuz bir döngü yapar? – BallpointBen