我有兩個班。班A和班B.在班A有桌子view.When我點擊A班的單元我呼籲第一個API保存數據/saveData
&對第一個API的響應我打電話給另一個API getData
。我在後臺調用這些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'方法中使用它。 –