我需要有关其代码的帮助 为什么在将 Swift 3 更改为 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 需要一个完成 block ,而 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()
}
即使在保护 block 内也需要调用完成 block ,可能带有一些 bool 参数,否则“self.isTakingPicture = false”行将不会被执行。
关于swift - 在 Swift 4 或更高版本中调用此函数时,必须传递 '()' 元组;您的意思是输入类型为 '()' 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49329330/