将 String 数组转换为 Int 数组 Swift 2?
Convert String Array into Int Array Swift 2?
[Xcode7.1,iOS9.1]
我有一个数组:var array: [String] = ["11", "43", "26", "11", "45", "40"]
我想将它(每个索引)转换成一个 Int,这样我就可以用它来从计时器倒计时,对应于索引。
如何将 String
数组转换为 Swift 2 中的 Int
数组?
我尝试了几个链接,none 都有效,但所有链接都给了我一个错误。链接中的大部分代码已贬值或尚未更新为 swift 2,例如 toInt()
方法。
使用map
函数
let array = ["11", "43", "26", "11", "45", "40"]
let intArray = array.map { Int([=10=])!} // [11, 43, 26, 11, 45, 40]
在 class 喜欢 UIViewController
中使用
let array = ["11", "43", "26", "11", "45", "40"]
var intArray = Array<Int>!
override func viewDidLoad() {
super.viewDidLoad()
intArray = array.map { Int([=11=])!} // [11, 43, 26, 11, 45, 40]
}
如果数组包含不同的类型,你可以使用flatMap
(Swift 2) 或 compactMap
(Swift 4.1+) 来只考虑可以转换为 Int
let array = ["11", "43", "26", "Foo", "11", "45", "40"]
let intArray = array.compactMap { Int([=12=]) } // [11, 43, 26, 11, 45, 40]
我建议使用一些不同的方法
let stringarr = ["1","foo","0","bar","100"]
let res = stringarr.map{ Int([=10=]) }.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)]
Swift 4, 5:
如果你想将字符串数字转换为 int 类型的数组的即时方法(在我曾经经历过的特定情况下):
let pinString = "123456"
let pin = pinString.map { Int(String([=10=]))! }
你的问题是:
let pinArrayString = ["1","2","3","4","5","6"]
let pinArrayInt = pinArrayString.map { Int([=11=])! }
Swift 4, 5:
将 compactMap 与转换为 Int 一起使用,解决方案不带“!”。
let array = ["1","foo","0","bar","100"]
let arrayInt = array.compactMap { Int([=10=]) }
print(arrayInt)
// [1, 0, 100]
[Xcode7.1,iOS9.1]
我有一个数组:var array: [String] = ["11", "43", "26", "11", "45", "40"]
我想将它(每个索引)转换成一个 Int,这样我就可以用它来从计时器倒计时,对应于索引。
如何将 String
数组转换为 Swift 2 中的 Int
数组?
我尝试了几个链接,none 都有效,但所有链接都给了我一个错误。链接中的大部分代码已贬值或尚未更新为 swift 2,例如 toInt()
方法。
使用map
函数
let array = ["11", "43", "26", "11", "45", "40"]
let intArray = array.map { Int([=10=])!} // [11, 43, 26, 11, 45, 40]
在 class 喜欢 UIViewController
中使用
let array = ["11", "43", "26", "11", "45", "40"]
var intArray = Array<Int>!
override func viewDidLoad() {
super.viewDidLoad()
intArray = array.map { Int([=11=])!} // [11, 43, 26, 11, 45, 40]
}
如果数组包含不同的类型,你可以使用flatMap
(Swift 2) 或 compactMap
(Swift 4.1+) 来只考虑可以转换为 Int
let array = ["11", "43", "26", "Foo", "11", "45", "40"]
let intArray = array.compactMap { Int([=12=]) } // [11, 43, 26, 11, 45, 40]
我建议使用一些不同的方法
let stringarr = ["1","foo","0","bar","100"]
let res = stringarr.map{ Int([=10=]) }.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)]
Swift 4, 5:
如果你想将字符串数字转换为 int 类型的数组的即时方法(在我曾经经历过的特定情况下):
let pinString = "123456"
let pin = pinString.map { Int(String([=10=]))! }
你的问题是:
let pinArrayString = ["1","2","3","4","5","6"]
let pinArrayInt = pinArrayString.map { Int([=11=])! }
Swift 4, 5:
将 compactMap 与转换为 Int 一起使用,解决方案不带“!”。
let array = ["1","foo","0","bar","100"]
let arrayInt = array.compactMap { Int([=10=]) }
print(arrayInt)
// [1, 0, 100]