未调用完成块(Swift)

时间:2016-02-12 23:09:09

标签: ios swift closures

我编写了一个以完成块作为参数的函数。当我在视图控制器中调用此函数时,不执行完成块。这是我第一次编写自己的自定义完成块,所以我可能只是犯了一个简单的错误。这是我模型中的功能:

func iterateThrough2(userInput: String, completion: (completed: Bool) -> Bool) -> Double {

    while numberOfCharactersDone < userInput.characters.count {
        let startIndex = userInput.startIndex.advancedBy(numberOfCharactersDone)
        let letterIndex = userInput.characters[startIndex]
        let letter = String(letterIndex)
        if isLetter(letter) {
            isALetter(letter, input: userInput)
        }
        else {
            isNotLetter(letter)
        }
        numberOfCharactersDone++
    }
    return total
}

在我的视图控制器中,我称之为:

@IBAction func calculate(sender: UIButton) {
    if let text = self.enteredText.text {
       let result = calculator.iterateThrough2(text, completion: { (completed) -> Bool in
        if completed {
            print("good")
            return true
        }
        else {
            print("not good")
            return false
        }
       })
        self.outputLabel.text = String(result)
        calculator.resetData()
    }
  }

该函数确实成功返回了一个double,但它正在以其他方式工作。它只是没有调用闭包。我做错了什么?

我是否必须在我的方法中包含并指定何时我想要运行闭包?我在这里阅读:https://www.codefellows.org/blog/writing-completion-blocks-with-closures-in-swift并尝试在我的方法结束时调用完成块,如:

completion(completed: completed)
return total

但是我收到错误“使用未解析的标识符”已完成“”

0 个答案:

没有答案