2017-05-29 41 views
0

我有兩個類,它們提供了從API獲取數據時報告各種錯誤的委託方法。 HttpAPI獲取天氣數據,RadarAPI獲取雷達圖像。下面的代碼位於HomeViewController,它處理來自每個API的數據或錯誤。用一個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也會發生錯誤;因此,將推出兩個UIAlertControllers,這是不推薦的。

如何處理多個錯誤消息並在單個UIAlertController中顯示這​​些錯誤?

回答

0

爲什麼2 UIAlertControllers不允許展示?

無論如何,如果你不想顯示2個不同的警報,嘗試做一個機制,在你決定顯示什麼之前等待兩個響應。

+0

一次只能顯示一個警報控制器。顯示多個警報也是不好的做法,最好顯示一個警報。關於你的答案,你可以在Swift中提供一些這樣的機制代碼嗎? – wigging

+0

如果要呈現多於1個UIAlertController,請創建您自己的自定義類,並使UIAlertController具有自己的UIWindow,並將其展示給自己。 – TawaNicolas

+0

我不想創建多個警報。我想要一個警報,它將顯示來自'HttpAPI'和'RadarAPI'的多個錯誤消息。 – wigging