将[Int?]转换为[Int]

时间:2015-12-30 09:12:00

标签: arrays string swift int unwrap

我有一个String,例如"7,8,9,10"我想转换为Int项目数组[Int]

但是,我的代码目前给了我一个[Int?](一个可选整数数组)。这是代码:

let years = (item["years"] as! String)
                  .componentsSeparatedByString(",")
                  .map { word in Int(word)  }

我尝试了一些方法,例如将Int(word)更改为Int(word!),并将!添加到String)的末尾,但很快就不喜欢这样的外观这些想法。

我认为有一些显而易见的事情,我作为一个初学者做错了,但我不太确定是什么!非常感谢任何帮助 - 谢谢!

2 个答案:

答案 0 :(得分:8)

将选项数组转换为非选项数组的经典方法是flatMap { $0 }

let years = ...map { word in Int(word) }.flatMap { $0 }

答案 1 :(得分:6)

纯粹的Swift解决方案,没有基金会的帮助

let arr = "7,8,9,10".characters.split(",").flatMap{ Int(String($0)) }
print(arr) // [7, 8, 9, 10]