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

时间:2015-10-26 14:19:36

标签: arrays string swift int swift2

[Xcode 7.1,iOS 9.1]

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

我想将那个(每个索引)转换成一个Int,所以我可以用它来计时器,相应的索引倒计时。

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

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

4 个答案:

答案 0 :(得分:42)

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

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

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

答案 1 :(得分:2)

迅速4、5:

使用带有强制转换为Int的compactMap,解决方案不带'!'。

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

print(arrayInt)
// [1, 0, 100]

答案 2 :(得分:1)

我建议采用一些不同的方法

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

答案 3 :(得分:1)

迅速4、5:

如果要将字符串数字转换为int类型的数组的即时方法(在我遇到过的特殊情况下):

let pinString = "123456"
let pin = pinString.map { Int(String($0))! }

您的问题是:

let pinArrayString = ["1","2","3","4","5","6"]
let pinArrayInt = pinArrayString.map { Int($0)! }