gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 06:18:15 25 4
gpt4 key购买 nike

我在 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 中,您不能定义一个数组,其中泛型元素是一个隐式展开的可选元素。

Implicitly unwrapped optionals are only allowed at top level and as function results.

The compiler

您可以做的是创建一个新数组 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
}

关于arrays - 快速将 [String?] 转换为 [String!],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39547610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com