如何在其身上打开警卫声明?

时间:2016-08-31 09:29:37

标签: ios swift2 alamofire

我的错误陈述是:

在'保护条件'中声明的

变量在其正文中不可用

我的代码是:

 extension ViewController {
  func uploadImage(image: UIImage, progress: (percent: Float) -> Void,
                   completion: (tags: [String], colors: [PhotoColor]) -> Void) {
    guard let imageData = UIImageJPEGRepresentation(image, 0.5) else {

      Alamofire.upload(
        .POST,
        "http://api.imagga.com/v1/content",
        headers: ["Authorization" : "Basic xxx"],
        multipartFormData: { multipartFormData in
          multipartFormData.appendBodyPart(data: imageData, name: "imagefile",
            fileName: "image.jpg", mimeType: "image/jpeg")
          }

以上是该计划的一部分。

该行中出现的错误包含“data:imageData”

提前致谢!

1 个答案:

答案 0 :(得分:3)

考虑这个后卫示例:

guard let variable = optionalVariable else { return }
// Variable is safe to use here

这个如果示例:

if let variable = optionalVariable {
    // Variable is safe to use here 
}

在你的情况下,你将这两个概念混合在一起。您使用后卫作为 if 语句。您可以将保护更改为if,或将代码移到else块之外。

后卫声明可能有点令人困惑!考虑它的用法,如循环内的 continue 语句。