我正在尝试运行一个闭包但收到错误。无法将类型'()'的值转换为闭包结果类型'Bool'。我不确定我在这里做错了什么。
func runPrintCycle(){
self.runPrinter1() { success in
self.runPrinter2() { success in
print("Success")
}
}
}
func runPrinter1(completionHandler: (Bool) -> Bool){
if let printer1 = Workstation.instance.printer1{
let receiptPrinter = Print(printer: printer1)
receiptPrinter.runPrinterReceiptSequence() { success in
completionHandler(true)
}
}else{
completionHandler(true)
}
}
func runPrinter2(completionHandler: (Bool) -> Bool){
if let printer2 = Workstation.instance.printer2{
let receiptPrinter = Print(printer: printer2)
receiptPrinter.runPrinterReceiptSequence() { success in
completionHandler(true)
}
}else{
completionHandler(true)
}
}
答案 0 :(得分:2)
您可能不需要在Bool
函数中将完整闭包声明为返回runPrinter
值。让他们返回Void
。此外,您可能希望在找不到打印机时发送false
:
func runPrintCycle() {
self.runPrinter1() { success in
print("Printer 1: \(success)")
// put here if(success) if you wish run second printer only on success
self.runPrinter2() { success in
print("Printer 2: \(success)")
}
}
}
func runPrinter1(completionHandler: (Bool) -> ()) {
if let printer1 = Workstation.instance.printer1 {
let receiptPrinter = Print(printer: printer1)
receiptPrinter.runPrinterReceiptSequence() { success in
completionHandler(true) //probably success instead true?
}
}else{
completionHandler(false)
}
}
func runPrinter2(completionHandler: (Bool) -> ()){
if let printer2 = Workstation.instance.printer2{
let receiptPrinter = Print(printer: printer2)
receiptPrinter.runPrinterReceiptSequence() { success in
completionHandler(true) //probably success instead true?
}
}else{
completionHandler(false)
}
}