我在Swift 3.0中进行了测试。我想添加array1
到array2
,示例和错误如下:
var array1: [String?] = ["good", "bad"]
var array2 = [String!]()
array2.append(array1)
//Cannot convert value of type '[String?]' to expected argument type 'String!'
array2.append(contentsOf: array1)
//Extraneous argument label 'contentsOf:'in call
我知道如果我改成
var array2 = [String?]()
array2.append(contentsOf: array1)
有用!如果我不更改类型,该如何解决?
在Swift 3中,您无法定义一个数组,其中的一般元素是一个隐式解包的可选元素。
隐式解包的可选选项仅在顶层和作为函数结果时才允许使用。
编译器
您可以做的是创建一个String
仅包含的填充元素的新数组array1
。
let array1: [String?] = ["good", "bad", nil]
let array2: [String] = array1.flatMap { $0 }
print(array2) // ["good", "bad"]
如Sam M所示,这确实是可能的,这是代码
let array2 = array1.map { elm -> String! in
let res: String! = elm
return res
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句