[Xcode 7.1, iOS 9.1]
Ich habe ein Array: var array: [String] = ["11", "43", "26", "11", "45", "40"]
Ich möchte das (jeden Index) in ein Int umwandeln, so dass ich es verwenden kann, um von einem Timer bzw. dem Index aus zu zählen.
Wie kann ich in Swift 2 ein String
-Array in ein Int
-Array konvertieren?
Ich habe mehrere Links ausprobiert, keiner hat funktioniert und alle haben einen Fehler ausgegeben. Der größte Teil des Codes der Links wird auf Swift 2, beispielsweise die toInt()
-Methode, abgeschrieben oder nicht aktualisiert.
Verwenden Sie die map
-Funktion
let array = ["11", "43", "26", "11", "45", "40"]
let intArray = array.map { Int($0)!} // [11, 43, 26, 11, 45, 40]
Innerhalb einer Klasse wie UIViewController
verwenden
let array = ["11", "43", "26", "11", "45", "40"]
var intArray = Array<Int>!
override func viewDidLoad() {
super.viewDidLoad()
intArray = array.map { Int($0)!} // [11, 43, 26, 11, 45, 40]
}
Wenn das Array verschiedene Typen enthält, können Sie flatMap
verwenden, um nur die Elemente zu berücksichtigen, die in Int
konvertiert werden können.
let array = ["11", "43", "26", "Foo", "11", "45", "40"]
let intArray = array.flatMap { Int($0) } // [11, 43, 26, 11, 45, 40]
ich schlage einen etwas anderen Ansatz vor
let stringarr = ["1","foo","0","bar","100"]
let res = stringarr.map{ Int($0) }.enumerate().flatMap { (i,j) -> (Int,String,Int)? in
guard let value = j else {
return nil
}
return (i, stringarr[i],value)
}
// now i have an access to (index in orig [String], String, Int) without any optionals and / or default values
print(res)
// [(0, "1", 1), (2, "0", 0), (4, "100", 100)]