Es sieht so aus, als ob die folgende Swift-For-In-Schleife versucht, mehr Elemente durchzugehen als im Array.For-In-Schleife geht zu weit und findet 'Null' beim Entpacken
Zum Beispiel dieser Code:
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)
}
Ruft diese Ausgabe:
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
ich hier etwas fehlt muss. Sollte nicht list.count
die Anzahl der Elemente sein, die die For-In-Schleife zu entpacken versucht?
Nicht oben abgebildet funktioniert die For-In-Schleife wie erwartet, wenn Sie eine [Int]
-Liste anstelle von [Int?]
ohne Auspacken verwenden.
Ich bin auf Swift Version 2.1.1.
ein seltsames Verhalten hier. Wenn Sie 'list' als' [Int] 'bezeichnen und dann' x' als 'Int?' Kennzeichnen, wird mit der 'for-in'-Schleife' nil' für immer gedruckt. – BallpointBen
@Robert Dieses Verhalten ist nicht besonders merkwürdig, wenn Sie verstehen, wie es funktioniert ... aber Swift sollte wahrscheinlich einfach verhindern, dass 'x' als optionales Zeichen ist (weil es nur zu einer Endlosschleife führen kann). – nhgrif
Können Sie kurz erklären, was los ist? Warum macht das eine Endlosschleife? – BallpointBen