シングルトンクラスを使用してネットワーク応答を検証しています。関数(validResponse()
)の中で私はシングルトンを呼び出していますが、エラーが発生したことをユーザーに知らせるためにアラートボックスをポップアップする別の関数を呼び出します。私のシングルトンクラスの内部シングルトンでUIViewControllerを取得するには?
機能:
func validResponse(data: Data?, response: URLResponse?, error: Error?, viewController: UIViewController, context: String?) -> Bool {
...
DispatchQueue.main.async {
AlertHelper.showAlertWrapper(viewController: viewController, alertTitle: "Error", alertMessage: self.genericError)
}
}
AlertHelper
コード:validResponse()
を呼び出す
class AlertHelper {
static func showAlertWrapper(viewController: UIViewController, alertTitle: String, alertMessage: String) {
let alertController = UIAlertController(title: alertTitle, message: alertMessage, preferredStyle: .alert);
let okAction = UIAlertAction(title: "OK", style: .default, handler: nil);
alertController.addAction(okAction);
viewController.present(alertController, animated: true, completion: nil);
}
}
:
let result = self.networkHelper.validResponse(data: data, response: response, error: error, viewController: self, context: "Delete section")
上記インスタンスself
では、仕事に行くされていません、と私はfigurまで一時的にそこにある何をすべきかshowAlertWrapper
のようにUIViewController
をviewController
に渡すことができると私は理解しています。しかし、これはちょっと面倒です。
シングルトンクラスの現在のビューコントローラを参照できる方法はありますか?validResponse()
に渡す必要はありませんか?
私は警告を表示するには、ネットワークヘルパーの仕事ではないことを示唆しています。完了ハンドラを介してエラーを返すだけで、必要に応じてそのクラスに警告を表示させる必要があります。 – Paulw11
@ Paulw11ああ、良い点。私はヘルパークラスを改作します。 – toast