快速关闭不起作用

时间:2016-08-09 20:19:57

标签: swift

我正在尝试运行一个闭包但收到错误。无法将类型'()'的值转换为闭包结果类型'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)
            }
        }

1 个答案:

答案 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)
    }
}