私は、私は私が別のAPI getData
を呼び出す最初のAPIの応答にデータを/saveData
&を保存するための最初のAPIを呼び出すクラスAのセルをタップview.When表があり、クラスAでは2 classes.Class AとクラスBを持っています。私はこれらのAPIをバックグラウンドで呼び出します。クラスAに移動すると、viewDidLoad()
の別のAPIが呼び出されます。これをフォアグラウンドで呼び出します。クラスAのAPIはクラスBに影響しません。swift 3でmutlile APIを呼び出す際に問題が発生しましたか?
それを行う最善の方法は何ですか?
私はDispatchGroup
を試しましたが、私のためには機能しませんでした。
func saveInBackground(parameter : [String : AnyObject]?) -> Void {
let group = DispatchGroup()
group.notify(queue: DispatchQueue.global(qos: .background)){
let apiManager = APIHandler(baseURL: Constants.API.baseURL, APIVersion: "")
apiManager.requestOfBgMethod(.post, path: Constants.API.Name.addGeneralField.completePath, parameters: parameter, encoding: .url, headers: nil, apiSuccess: { (result) in
//update user
self.copyUser = User(copyFrom: self.user)
self.saveCVResponse(result: result)
//fetch data in background
Utility.sharedInstance.updateCVdata(cvManager: self.cvManager)
}, apiFailure: { (error) in
})
}
// DispatchQueue.global(qos: DispatchQoS.QoSClass.background).async {
//
//
// }
}
この場合のために、私は非常に複雑と時間がかかり、全体のAPIの構造を変更する必要があります。 background&forground APIが同じメソッドを使用しないので、 – Techiee
あなたは 'APIHandler'クラスを変更できますか?多分、このクラスはこれを行うためにシングルトンを提供するべきです。 –
また、 'DispatchSemaphore'のグローバル変数を定義し、それを' saveInBackground'メソッドで直接使用することもできます。 –