我有一个foo
属性
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?
,但这并没有成功。
答案 0 :(得分:0)
您的代码无效,因为在表达式foo = bar != nil ? NSNumber(value:bar) : nil
中,您尝试传递给bar
的{{1}}仍然是可选的。您可以使用force unwrap(NSNumber(value:)
)运算符来解包它,但它不如正确的解决方案那么优雅:
这是!
的完美用例:
Optional.map