Swift 2.0如何将字符串数组转换为整数数组

时间:2016-01-12 15:48:51

标签: swift swift2

我有一个String数组:

values = [textField1.text!, textField2.text!, textField3.text!, textField4.text!, textField5.text!]

我希望将其转换为Int数组。我如何在swift 2.0中做到这一点?

2 个答案:

答案 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")(不是本身,转换,但IntString初始化)将返回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] */