【问题标题】:Guard vs if-let [duplicate]Guard vs if-let [重复]
【发布时间】:2016-12-26 04:03:29
【问题描述】:
let task = urlSession.dataTaskWithRequest(urlRequest)
    { (data, response, error) -> Void in
    guard error == nil else {
      print("Error while fetching remote rooms: \(error)")
      return
    }

下面的块可以替代上面的吗?

let task = urlSession.dataTaskWithRequest(urlRequest)
    { (data, response, error) -> Void in
    if let myerror = error! {
      print("Error while fetching remote rooms: \(myerror)")
      return
    }

【问题讨论】:

  • 看看这个:Guard vs if-let
  • 不管这是否重复,在if let myerror = error! 中强制解包error 是完全错误的。可选绑定的要点是在使用之前测试一个值是否为nilif let 块将在某个时候崩溃。
  • 你能推荐我正确的 if-let 代码吗?
  • if let data = data { print(data.count) } else if let error = error { print(error) }

标签: ios swift3 guard


【解决方案1】:

不,这将是正确的“守卫”替代方案。

let task = urlSession.dataTaskWithRequest(urlRequest) { (data, response, error) -> Void in
    guard error == nil else {
        print("Error while fetching remote rooms: \(error)")
        return
    }

    // guard passed, thus there is no error
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-02
    • 2019-11-30
    • 2016-04-05
    • 2014-11-16
    相关资源
    最近更新 更多