Преобразование String Array в Int Array Swift 2?

[Xcode 7.1, iOS 9.1]

У меня есть массив: var array: [String] = ["11", "43", "26", "11", "45", "40"]

Я хочу преобразовать это (каждый индекс) в Int, чтобы я мог использовать его для обратного отсчета с таймера, соответствующего индексу.

Как преобразовать массив String в массив Int в Swift 2?

Я пробовал несколько ссылок, ни один из них не работал, и все они дали мне ошибку. Большая часть кода из ссылок обесценивается или не обновляется до swift 2, например метода toInt().

Ответ 1

Используйте функцию map

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

Внутри такого класса, как UIViewController используйте

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

Если массив содержит разные типы, вы можете использовать compactMap для рассмотрения только тех элементов, которые можно преобразовать в Int

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

Ответ 2

Я предлагаю немного другой подход

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