0
APIからデータをフェッチするときにさまざまなエラーを報告するデリゲートメソッドを提供する2つのクラスがあります。 HttpAPI
は気象データを取得し、RadarAPI
はレーダー画像を取得します。下記のコードはHomeViewController
にあり、各APIのデータまたはエラーを処理します。1つのUIAlertControllerで複数のエラーを処理する
// MARK: - HttpAPI Delegate
extension HomeViewController: HttpAPIDelegate {
func apiSessionError(_ error: Error) {
// show alert with error from url session
}
func apiHttpError(_ code: Int) {
// show alert with HTTP error code
}
func apiJsonError(_ error: Error) {
// show alert with json error
}
func apiSuccess(_ json: [String: Any]) {
// update app with weather data
}
}
// MARK: - RadarAPI Delegate
extension HomeViewController: RadarAPIDelegate {
func radarSessionError(_ error: Error) {
// show alert for url session error
}
func radarHttpError(_ code: Int) {
// show alert with HTTP response error code
}
func radarImageError(_ error: String) {
// show alert with image parsing error message
}
func radarSuccess(_ image: UIImage) {
// update app with weather radar image
}
}
気象データの取得やレーダー画像の取得中にエラーが発生した場合は、アラートを表示したいと思います。問題は、HttpAPI
にエラーが発生した場合、RadarAPI
もエラーとなります。したがって、推奨されていない2つのUIAlertControllers
が提示されます。
複数のエラーメッセージを処理し、そのエラーを1つのメッセージに表示するにはどうすればよいですか?UIAlertController
?
一度に表示できるアラートコントローラは1つだけです。複数のアラートを表示することも悪い習慣ですが、アラートを1つ表示することをお勧めします。あなたの答えに関しては、Swiftにこのようなメカニズムのサンプルコードを提供できますか? – wigging
複数のUIAlertControllerを表示する場合は、独自のカスタムクラスを作成し、UIAlertControllerに自身から提示する独自のUIWindowを作成させます。 – TawaNicolas
複数のアラートを作成したくありません。私は、 'HttpAPI'と' RadarAPI'からの複数のエラーメッセージを表示する一つの警告が欲しいです。 – wigging