[Xcode 7.1, iOS 9.1]
我有一个数组:var array: [String] = ["11", "43", "26", "11", "45", "40"]
我想将它(每个索引)转换为整数,以便我可以用它来倒计时计时器,针对索引。
如何在Swift 2中将String
数组转换为Int
数组?
我尝试了几个链接,但都没有成功,并且它们都给了我一个错误。 大多数链接的代码已过时或尚未更新到Swift 2,例如 toInt()
方法。
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
(Swift 2)或compactMap
(Swift 4.1+)仅考虑可以转换为Int
的元素。
let array = ["11", "43", "26", "Foo", "11", "45", "40"]
let intArray = array.compactMap { Int($0) } // [11, 43, 26, 11, 45, 40]
Swift 4, 5:
使用带有Int强制转换的compactMap,无需使用'!'即可解决问题。
'compactMap'过滤空值并应用转换。
let array = ["1","foo","0","bar","100"]
let arrayInt = array.compactMap { Int($0) }
print(arrayInt)
// [1, 0, 100]
Swift 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)! }
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)]
一个稍微不同的例子
let digitNames = [0: "Zero", 1: "One", 2:"Two", 3: "Three",
4:"Four",5:"Five", 6: "Six", 7: "Seven", 8: "Eight", 9: "Nine", 10:"Ten"
]
let numbers = [16,58,510]
let strings = numbers.map { (number) -> String in
var number = number
var output = ""
repeat {
output = digitNames[number % 10]! + output
number /= 10
} while number > 0
return (output)
}
print(strings)
// strings is inferred to be of type [String]
// its value is ["OneSix", "FiveEight", "FiveOneZero"]
viewDidLoad()
。在类级别声明变量时,使用隐式解包可选类型。 - vadianParse
检索数据后。 - vadian