我有一个带有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) }