在 Swift 4 或更高版本中调用此函数时,必须传递'()'元组;您的意思是输入类型为"()"吗?



我需要代码方面的帮助 为什么在更改 Swift 3 for Swift 4 之后出现?89/5000我正在为 IOS 11 移动,因为我和 8 一起改变了方法的所有元组请帮助我

let action: () -> Void = { [unowned self] in
    self.cameraController.takePicture { self.isTakingPicture = false }}

fileprivate func takePicture() {
        guard isBelowImageLimit() && !isTakingPicture else { return }
        isTakingPicture = true
        bottomContainer.pickerButton.isEnabled = false
        bottomContainer.stackView.startLoader()
        let action: () -> Void = { [unowned self] in
          self.cameraController.takePicture { self.isTakingPicture = false }
        }
        if configuration.collapseCollectionViewWhileShot {
          collapseGalleryView(action)
        } else {
          action()
        }
      }
    }

根据代码行

self.cameraController.takePicture { self.isTakingPicture = false }}

takePicture 期待一个完成块,而 takePicture 没有。

您可以编写以下方法:

fileprivate func takePicture(completion: () -> Void) {
     guard isBelowImageLimit() && !isTakingPicture else { 
       return }
     isTakingPicture = true
     bottomContainer.pickerButton.isEnabled = false
     bottomContainer.stackView.startLoader()
     let action: () -> Void = { [unowned self] in
       self.cameraController.takePicture { self.isTakingPicture = false 
     }
     }
     if configuration.collapseCollectionViewWhileShot {
      collapseGalleryView(action)
     } else {
      action()
     }
   }
  //Need to call the completion block
  completion()
}

即使在保护块内部也需要调用完成块,可能带有一些布尔参数,否则"self.isTakingPicture = false"行将不会执行。

最新更新