代码之家  ›  专栏  ›  技术社区  ›  Peterdk

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

  •  0
  • Peterdk  · 技术社区  · 7 年前

    我有一个CoreData对象 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?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Alexander    7 年前

    您的代码不起作用,因为在表达式中 foo = bar != nil ? NSNumber(value:bar) : nil 这个 bar NSNumber(value:) ! )操作员打开它,但它没有合适的解决方案那么优雅:

    这是一个完美的用例 Optional.map

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