Xcode 12.5 编译器错误,不能在需要类型“someType”的上下文中使用“nil”

获取内存

这两个代码片段有什么区别?

cellModels.append(contentsOf: [].compactMap { $0.condition ? .init(text: $0.text, backgroundColor: $0.color, action: $0.action) : nil })


cellModels.append(contentsOf: [].compactMap {
            if $0.condition {
                return .init(text: $0.text, backgroundColor: $0.color, action: $0.action)
            } else {
                return nil
            }
        })

更新到 Xcode 12.5 后,第一个代码不再编译

Playground 的一些代码片段。在 Xcode 12.5 中尝试

struct SomeStruct {
var str: String
}
var arr1: [SomeStruct] = []
arr1.append(contentsOf: ["123123", "2", "332", "124r132q", "123"].compactMap { $0.count == 3 ? .init(str: $0) : nil })
arr1.append(contentsOf: ["123123", "2", "332", "124r132q", "123"].compactMap {
                if $0.count == 3 {
                    return .init(str: $0)
                } else {
                    return nil
                }})
获取内存

将代码分成两部分有帮助

var mappedArray: [SomeStruct] = ["123123", "2", "332", "124r132q", "123"].compactMap { $0.count == 3 ? .init(str: $0) : nil }

arr1.append(contentsOf: mappedArray)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章