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

时间:2017-10-17 16:16:21

标签: swift null optional ternary-operator

我有一个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?,但这并没有成功。

1 个答案:

答案 0 :(得分:0)

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

这是!的完美用例:

Optional.map