我有一个String
数组:
values = [textField1.text!, textField2.text!, textField3.text!, textField4.text!, textField5.text!]
我希望将其转换为Int
数组。我如何在swift 2.0中做到这一点?
答案 0 :(得分:6)
您可以使用Swift地图功能:
var intArray = values.map({Int($0) ?? 0})
答案 1 :(得分:2)
首先,您可能不应该使用可选字符串的强制解包来初始化字符串数组(如果其中一个文本字段.text
属性为nil
,那该怎么办?运行时异常)。您可以使用nil合并运算符以安全的方式执行此操作:
let myStringArr = [textField1.text ?? "0", textField2.text ?? "0"]
现在,类型转换也是如此:例如一个字符串" foo"对于尝试转换Int("foo")
(不是本身,转换,但Int
按String
初始化)将返回nil。因此,如果您已安全地到达字符串数组(根据上面的代码示例),您可以再次使用nil合并运算符来确保Int
条目中的Int
条目的安全初始化} array:
let myStringArr = ["1", "foo", "4", "bar", "3.5"]
let myIntArrSafe = myStringArr.map { Int($0) ?? 0 }
print(myIntArrSafe)
/* [1, 0, 4, 0, 0] */
另一个解决方案是通过安全整数转换扩展String
类型,如果0
Int
初始化失败,则返回String
。
extension String {
var integerValue: Int { return Int(self) ?? 0 }
}
let myStringArr = ["1", "foo", "4", "bar", "3.5"]
let myIntArrSafe = myStringArr.map { $0.integerValue }
print(myIntArrSafe)
/* [1, 0, 4, 0, 0] */