it-swarm.com.ru

Преобразовать массив строк в 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()

16
Lukesivi

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

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

Внутри такого класса, как 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]
}

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

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

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

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