以下のように書いてみましたが、エラーが出ています。
解決方法がわかる方、教えていただけますと幸いです。
やりたいこととしては、
(1) MapViewControllerで、DataManagerのmapメソッドを呼び出し、
APIから情報を更新して、addAnnotationsメソッドを呼びたいと考えています。
// MapViewController.swift class MapViewController: UIViewController, MKMapViewDelegate { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. // AppDelegateのインスタンスを取得 self.delegate = UIApplication.shared.delegate as? AppDelegate // DataManagerのインスタンスを取得 self.dataManager = delegate?.dataManager // APIからデータの更新 self.dataManager?.map(callback: self.addAnnotations) // (1) } func addAnnotations() { // } }
(2) 成功すれば、callbackメソッドを呼び出しますが、
(3) 失敗した場合は、一旦loginメソッドを呼び出したあと、
再度mapメソッドをリトライしたいと考えています。
しかし、(3)の位置で、
Cannot convert value of type '()' to expected argument type '() -> Void'
というエラーが出てしまいました。
// DataManager.swift class DataManager { func login(callback: @escaping () -> Void) { // providerAuthNone.request(.login) { result in switch result { case let .success(moyaResponse): do { let filteredResponse = try moyaResponse.filterSuccessfulStatusCodes() callback() } catch { // show an error to your user } case let .failure(error): // break } } } func map(callback: @escaping () -> Void) { providerAuthBearer.request(.map) { result in switch result { case let .success(moyaResponse): do { let filteredResponse = try moyaResponse.filterSuccessfulStatusCodes() callback() // (2) } catch { // show an error to your user self.login(callback: self.map(callback: callback)) // (3) } case let .failure(error): // break } } }
以上です。
よろしくお願い申し上げます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。