webentwicklung-frage-antwort-db.com.de

String-Array in Int Array Swift 2 konvertieren?

[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. 

16
Lukesivi

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]
42
vadian

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)]
1
user3441734