2016-07-22 10 views
0

私はネットワークマネージャクラス(シングルトン)を持っています。クラスのすべての関数で同じコードを呼び出す

アプリケーションが作成する必要があるAPI呼び出しごとに、このネットワークマネージャとは異なる機能が呼び出されます。

このNMのすべての機能は、各機能の完了ハンドラに達するまでアクティビティインジケータが表示されることから始まります。ユーザーにリクエストが実行されていることを示します。

これを行うにはどうすればよいでしょうか?

Alamofireポッドを使用しています。

func loadSetting(for user: String, completionHandler: (UserSetting?) ->()) { 
    myActivityIndicator.start //a line I'd like to perform in every function of this class 
    let parameters = ["UUID": user] 

    _ = Alamofire.request(.POST, "http://www.google.com/users", parameters: parameters) 
     .responseObject { (response: Response<UserSetting, NSError>) in 
      if let userSetting = response.result.value { 
       print("User Setting found remotely") 
       completionHandler(userSetting) 
      } else { 
       print("Couldn't fetch remote User Setting") 
       completionHandler(nil) 
      } 
      myActivityIndicator.stop //a line I'd like to perform in every function of this class 
    } 
} 

ありがとう:ここ

は私のAPI呼び出しの1の例です。

+1

1つのソリューションはすべてのたとえば、NetworkManagerの要求を関数要求で呼び出すと、その内部でアクティビティインジケータを処理できます。 –

+0

はい、解決策になる可能性があります、Victorに感謝します。しかし、私は各リクエスト(リクエストタイプ、URL、パラメータ、ファイル...)を送るために多くのパラメータを渡さなければならないでしょうか? – Tulleb

+1

はい、Alamofireのようにデフォルトのオプション値で定義することができます。 –

答えて

0

アクティビティインジケータを引数として渡してみませんか? したがって、loadSetting関数を呼び出すView Controllerから、参照を保持するアクティビティインジケータを渡してから、loadSetting関数内で開始/停止します。

関連する問題