尝试分配给可选 属性 时类型不匹配

Mismatching types when trying to assign to optional property

我有一个带有 foo 属性

的 CoreData 对象
var foo: NSNumber? 

现在我想给它赋值,但该值是可选的:Int64?

我尝试了以下方法:

var bar:Int64?
foo = bar != nil ? NSNumber(value:bar!) : nil

但这会导致

Result values in '? :' expression have mismatching types 'NSNumber' and '_'`

有没有简单的方法来完成这项工作?我尝试了 nil as NSNumber?,但没有成功。

您的代码不起作用,因为在表达式 foo = bar != nil ? NSNumber(value:bar) : nil 中,您尝试传递给 NSNumber(value:)bar 仍然是可选的。您可以使用 force unwrap (!) 运算符来展开它,但它不如正确的解决方案优雅:

这是 Optional.map 的完美用例:

foo = bar.map{ NSNumber(value: [=10=]) }