Arrays 将[Int?]转换为[Int]

Arrays 将[Int?]转换为[Int],arrays,string,swift,int,unwrap,Arrays,String,Swift,Int,Unwrap,我有一个字符串,例如“7,8,9,10”,我想将其转换为Int项的数组,即[Int] 但是,我的代码当前为我提供了一个[Int?](可选整数数组)。代码如下: let years = (item["years"] as! String) .componentsSeparatedByString(",") .map { word in Int(word) } 我尝试了一些方法,比如将Int(word)更改为Int(word

我有一个
字符串
,例如
“7,8,9,10”
,我想将其转换为
Int
项的数组,即
[Int]

但是,我的代码当前为我提供了一个
[Int?]
(可选整数数组)。代码如下:

let years = (item["years"] as! String)
                  .componentsSeparatedByString(",")
                  .map { word in Int(word)  }
我尝试了一些方法,比如将
Int(word)
更改为
Int(word!)
,以及添加
字符串的末尾)
,但是斯威夫特不喜欢这些想法的外观


我想,作为一个初学者,我显然做错了什么,但我不太确定是什么!任何帮助都将不胜感激-谢谢

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


let years=…map{word in Int(word)}.flatMap{$0}
纯Swift解决方案,无需基础帮助

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

使用flatMap是正确的,但是可以这样简化:
let years=(item[“years”]as!String)。FieldMave{int(0美元)} /代码>请告知导入基础的必要性(组件StutialBySype)。对于“纯”快速查看我的回答好干净的替代-只是为了帮助我了解SWIFT,有什么特别的优势,以避免基金会,或它只是另一种选择与相同的结果?@ BeBand基金会在苹果平台上可用。开源基础目前还没有完全实现。我希望借助Swift3.0,情况会有所改变,为社区带来好处。即使是在苹果平台上,由于“免费桥接”,有时也很难看出什么是“错误的”。这取决于你,你更喜欢什么,我尽量在我自己的代码中尽量避免基础,至少现在是这样。此外,纯Swift代码的速度可能更好(取决于您的实现)