将字符串数组转换为Int数组Swift 2?

Luk*_*ivi 17 arrays string int swift swift2

[Xcode 7.1,iOS 9.1]

我有一个数组: var array: [String] = ["11", "43", "26", "11", "45", "40"]

我想将它(每个索引)转换为一个Int,所以我可以使用它从一个定时器倒计时,相应的索引.

如何在Swift 2中将String数组转换为数组Int

我已经尝试了几个链接,没有一个工作,所有这些都给了我一个错误.链接中的大多数代码都已折旧或尚未更新为swift 2,例如toInt()方法.

vad*_*ian 48

使用该map功能

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

在类似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]
}
Run Code Online (Sandbox Code Playgroud)

如果数组包含不同类型,则可以使用flatMap仅考虑可转换为的项目compactMap

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

  • map函数没关系,但你不应该建议强制解包文本array.map {Int($ 0)?? 0}将是更好(更安全)的选择 (4认同)

Yan*_*eph 5

斯威夫特 4、5:

使用compactMap 与cast to Int,解决方案没有'!'。

let array = ["1","foo","0","bar","100"]
let arrayInt = array.compactMap { Int($0) }

print(arrayInt)
// [1, 0, 100]
Run Code Online (Sandbox Code Playgroud)