任何人都可以解释这个关于选项的Swift代码

时间:2014-11-20 19:12:33

标签: swift

今天我读了这样的代码,让我感到困惑。争论“错误”后的问号是什么意思?

if error? == nil {
    self.updateDate(NSDate())
    self.updateImage(originalPrice, newPrice: price!)
    self.updatePrice(price!)
  }

编辑:错误的定义来自这里

public func requestPrice(completion: PriceRequestCompletionBlock)

public typealias PriceRequestCompletionBlock = (price: NSNumber?, error: NSError?) -> ()

tracker.requestPrice { (price, error) -> () in
  if error? == nil {
    self.updateDate(NSDate())
    self.updateImage(originalPrice, newPrice: price!)
    self.updatePrice(price!)
  }
}

2 个答案:

答案 0 :(得分:3)

问号用于optionals展开。

但在这种情况下它什么都不做。

答案 1 :(得分:-1)

在Swift中,变量不能为零......除非您在类型定义中指定了这种可能性。在您的情况下,请求完成块可以返回错误...或者如果一切正常,则可以为零。

以下是Apple文档的链接:

https://developer.apple.com/library/ios/documentation/swift/conceptual/Swift_Programming_Language/Types.html#//apple_ref/doc/uid/TP40014097-CH31-XID_1126

在if语句中,问号不执行任何操作。你可以删除它。