web-dev-qa-db-fra.com

Convertir String Array en Int Array Swift 2?

[Xcode 7.1, iOS 9.1] 

J'ai un tableau: var array: [String] = ["11", "43", "26", "11", "45", "40"]

Je veux convertir cela (chaque index) en un Int afin de pouvoir l'utiliser pour décompter à partir d'un minuteur, respectif de l'index. 

Comment convertir un tableau String en un tableau Int dans Swift 2?

J'ai essayé plusieurs liens, aucun n'a fonctionné et ils m'ont tous donné une erreur. La plupart du code des liens est amorti ou n'a pas été mis à jour vers Swift 2, tel que la méthode toInt()

16
Lukesivi

Utilisez la fonction map

let array = ["11", "43", "26", "11", "45", "40"]
let intArray = array.map { Int($0)!} // [11, 43, 26, 11, 45, 40]

Dans une classe comme UIViewController use

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]
}

Si le tableau contient différents types, vous pouvez utiliser flatMap pour ne considérer que les éléments pouvant être convertis en Int.

let array = ["11", "43", "26", "Foo", "11", "45", "40"]
let intArray = array.flatMap { Int($0) } // [11, 43, 26, 11, 45, 40]
42
vadian

je suggère une approche un peu différente

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