我正在提取方法的閉包,但我總是收到此錯誤:
功能未使用
這是整個作業功能:
fileprivate func attemptToChangePassword() {
passwordChanger.change(securityToken: securityToken, oldPassword: oldPassword.text ?? "", newPassword: newPassword.text ?? "", onSuccess:{[weak self] in
self?.hideSpinner()
let alertController = UIAlertController(
title: nil,
message: "Your password has been successfully changed.",
preferredStyle: .alert)
let okButton = UIAlertAction(
title: "OK",
style: .default) { [weak self] _ in
self?.dismiss(animated: true)
}
alertController.addAction(okButton)
alertController.preferredAction = okButton
self?.present(alertController, animated: true)
}, onFailure: {[weak self] message in
self?.hideSpinner()
self?.showAlert(message: message) { [weak self] _ in
self?.oldPassword.text = ""
self?.newPassword.text = ""
self?.confirmPassword.text = ""
self?.oldPassword.becomeFirstResponder()
self?.view.backgroundColor = .white
self?.blurView.removeFromSuperview()
self?.cancel.isEnabled = true
}
})
}
這就是我將最后一個閉包提取到方法的方式:
fileprivate func startOver() -> (UIAlertAction) -> Void {
return { [weak self] _ in
self?.oldPassword.text = ""
self?.newPassword.text = ""
self?.confirmPassword.text = ""
self?.oldPassword.becomeFirstResponder()
self?.view.backgroundColor = .white
self?.blurView.removeFromSuperview()
self?.cancel.isEnabled = true
}
}
如果我嘗試這樣做,則會出現錯誤“函式未使用”:
onFailure: { [weak self] message in
self?.hideSpinner()
self?.showAlert(message: message) { [weak self] _ in
self?.startOver()//FUNCTION IS UNUSED
}
})
編輯:
這是使用的警報方法:
fileprivate func showAlert( message: String, okAction: @escaping (UIAlertAction) -> Void) {
let ac = UIAlertController(title: nil, message: message, preferredStyle: .alert)
let ok = UIAlertAction(title: "OK", style: .default, handler:okAction)
ac.addAction(ok)
ac.preferredAction = ok
self.present(ac, animated: true)
}
如果我添加回警報操作按鈕,它可以作業:
let okButton = UIAlertAction(
title: "OK",
style: .default,
handler:startOver())
uj5u.com熱心網友回復:
您當前在傳遞給函式的操作中呼叫該函式,showAlert然后丟棄它回傳的操作。相反,您希望將它回傳的操作直接傳遞給您的showAlert方法,而不是使用尾隨閉包語法將其包裝在另一個操作中:
self?.showAlert(message: message, okAction: self!.startOver())
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/441310.html
上一篇:SwiftUI錯誤-“代表必須回應locationManager:didFailWithError:”
下一篇:Scrollview正在向右滾動
