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



我有一个带有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仍然是可选的。您可以使用强制解包 ( !) 运算符来解包它,但它不如正确的解决方案那么优雅:

这是Optional.map的完美用例:

foo = bar.map{ NSNumber(value: $0) }

相关内容

  • 没有找到相关文章

最新更新