Ich muss ein grundlegendes Missverständnis haben, wie die Flusssteuerung in Swift funktioniert, weil dies für mich keinen Sinn ergibt.For-Schleife wird nicht ausgeführt, wenn ich eine innere Schleife hinzufüge
//objects is of type [AnyObject]?
for obj in objects!{
let colors = obj.valueForKey("colors") as? NSMutableArray
if colors != nil{
for i in 0...colors!.count{
if colors![i] as? String != nil{
colors![i] = (colors![i] as! String).capitalizedString
}
}
obj.setValue(colors, forKey: "colors")
}
obj.save()
}//end for
Wenn ich die innere for-Schleife zu entfernen, funktioniert die äußere normalerweise, aber wenn ich die innere Schleife hinzufügen, es wird nie über die erste Iteration der äußeren Schleife. Es gibt keine Abstürze oder irgendetwas - alles andere wird normal fortgesetzt.
Ich verstehe nicht, warum das passiert. Bin ich nur dicht und vermisse etwas Offensichtliches?
Alternativ könnte ich wahrscheinlich einfach eine Map-Funktion schreiben, um die Strings in meinem Array groß zu schreiben, aber ich möchte verstehen, warum dies nicht funktioniert.
Können Sie Beispieleingabe mit unerwartetem Verhalten geben? – Eiko
Sie sagen, es gibt keinen Absturz, aber es gibt einen offensichtlichen Fehler in '0 ... colors! .count', der bei einem Absturz enden muss. Ihre Antwort schlägt vor, das Problem zu beheben, so dass ich mir ziemlich sicher bin, dass es einen Absturz gab. – Sulthan
@Sulthan Ich dachte es auch ... aber es scheint auf Spielplatz gespielt zu haben - bis ich bemerkte, dass ich Swift Arrays und nicht NSMutableArray verwendete - also wurde die Schleife nie ausgeführt (Farben = Null). Also ja, es ist offensichtlich falsch. :) – Eiko