快速将[String?]转换为[String!]

胡伟

我在Swift 3.0中进行了测试我想添加array1array2,示例和错误如下:

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)

有用!如果我不更改类型,该如何解决?

卢卡·安格莱蒂(Luca Angeletti)

在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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

快速将String转换为NSDate返回nil

来自分类Dev

快速将String转换为CLLocationCoordinate2D

来自分类Dev

iOS:快速将UnsafeMutablePointer <Int8>转换为String?

来自分类Dev

如何快速将 Long Double 转换为 String

来自分类Dev

快速将String转换为数据库HTTP.UTF8

来自分类Dev

快速将NSTimeInteval转换为NSDate

来自分类Dev

快速将字典值转换为类型

来自分类Dev

无法快速将NSData转换为NSString

来自分类Dev

快速将时间转换为时间

来自分类Dev

快速将AnyObject强制转换为Block

来自分类Dev

快速将数字转换为文本

来自分类Dev

如何快速将Int转换为int?

来自分类Dev

如何快速将NSURL转换为CFURL?

来自分类Dev

快速将NSData转换为sockaddr结构

来自分类Dev

快速将枚举转换为NSNumber

来自分类Dev

快速将NSNumber的对象转换为Double

来自分类Dev

如何快速将UInt转换为Int?

来自分类Dev

如何快速将PFFile转换为UIImage?

来自分类Dev

快速将CGMutablePath转换为MKPolygon

来自分类Dev

快速将Int []转换为Int变量

来自分类Dev

快速将元素插入[(String,String)]元组

来自分类Dev

快速将String类型数组转换为Float类型数组无法将'String'类型的值分配给'Double'类型的下标

来自分类Dev

快速将许多行转换为json字符

来自分类Dev

快速将字符转换为字符串

来自分类Dev

快速将Unix时间转换为日期和时间

来自分类Dev

快速将UIImage转换为字节数组

来自分类Dev

快速将数组转换为JSON字符串

来自分类Dev

快速将Objective-C块转换为闭包

来自分类Dev

快速将Parse.com json数组转换为Array