У меня должно быть фундаментальное непонимание того, как управление потоком работает в Swift, потому что для меня это не имеет никакого смысла.Цикл не выполняется, когда я добавляю внутренний цикл
//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
Когда я удалить внутренний цикл, внешний один работает нормально, но когда я добавляю внутреннюю петлю, он никогда не получает мимо первой итерации внешнего цикла. Нет никаких аварий или чего-то еще - все остальное просто возобновляется нормально.
Я не понимаю, почему это происходит. Я просто плотный и пропуская что-то очевидное?
В качестве альтернативы, я мог бы просто написать функцию карты, чтобы использовать строки в массиве, но я хочу понять, почему это не работает.
Можете ли вы привести пример ввода с неожиданным поведением? – Eiko
Вы говорите, что нет сбоя, но есть очевидная ошибка в '0 ... цвета! .count', которая должна закончиться сбой. Ваш ответ предполагает, что исправление устраняет эту проблему, поэтому я уверен, что там был * сбой. – Sulthan
@ Sulthan Я тоже так думал ... но, похоже, он работал на детской площадке - пока не заметил, что я использую Swift Arrays, а не NSMutableArray, поэтому цикл никогда не исполнялся (colors = nil). Так что да, это явно неправильно. :) – Eiko