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

Xcode 12.5 compiler bug, 'nil' cannot be used in context expecting type 'someType'

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

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


cellModels.append(contentsOf: [].compactMap {
            if [=13=].condition {
                return .init(text: [=13=].text, backgroundColor: [=13=].color, action: [=13=].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 { [=14=].count == 3 ? .init(str: [=14=]) : nil })
arr1.append(contentsOf: ["123123", "2", "332", "124r132q", "123"].compactMap {
                if [=14=].count == 3 {
                    return .init(str: [=14=])
                } else {
                    return nil
                }})

将代码分成两部分有帮助

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

arr1.append(contentsOf: mappedArray)