In Swift 2.0, toInt()
usw. wurden durch Initialisierer ersetzt. (In diesem Fall Int(someString)
.)
Da nicht alle Saiten Ints umgewandelt werden kann, diese initializer ist failable, was bedeutet, es gibt eine optional int (Int?
) statt nur ein Int
. Das beste, was zu tun ist, entpacken Sie dieses optional mit if let
.
Ich bin nicht genau sicher, was Sie vorhaben, für, aber dieser Code funktioniert in Swift 2 und vollbringt, was ich denke, Sie versuchen zu tun:
let unsolved = "123abc"
var fileLines = [Int]()
for i in unsolved.characters {
let someString = String(i)
if let someInt = Int(someString) {
fileLines += [someInt]
}
print(i)
}
Oder für eine Swiftier Lösung :
let unsolved = "123abc"
let fileLines = unsolved.characters.filter({ Int(String($0)) != nil }).map({ Int(String($0))! })
// fileLines = [1, 2, 3]
können Sie verkürzen diese mehr mit flatMap
:
let fileLines = unsolved.characters.flatMap { Int(String($0)) }
flatMap
gibt "Array
mit den Nicht-Null-Ergebnissen des Mappings transform
über self
" zurück ... also wenn Int(String($0))
nil
ist, wird das Ergebnis verworfen.
Vielen Dank! Alles funktioniert, außer fileLines ist ein Array von Ints für mich. var fileLines: [Int] = [] (es besagt, dass fileLines + nicht verwenden kann =) – Aaron
Sie können die append-Methode verwenden oder 'fileLines + = [someInt]' –