[Xcode 7.1,iOS 9.1]
我有一个数组:var array: [String] = ["11", "43", "26", "11", "45", "40"]
我想将那个(每个索引)转换成一个Int,所以我可以用它来计时器,相应的索引倒计时。
如何在Swift 2中将String
数组转换为Int
数组?
我尝试了几个链接,没有一个工作,所有这些都给了我一个错误。链接中的大多数代码都已折旧或尚未更新为swift 2,例如toInt()
方法。
答案 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)! }