iptal alamofire:hızlı, ben bütün alamofire istekleri yapılmış bir NetworkRequest sınıfı, sahip önceki isteği
class NetworkRequest {
static let request = NetworkRequest()
var currentRequest: Alamofire.Request?
let dataManager = DataManager()
let networkManager = NetworkReachabilityManager()
let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT
func downloadData<T: Film>(slug: String, provider: String, section: String, dynamic: String, anyClass: T, completion: ([T]?) -> Void) {
var token: String = ""
if LOGGED_IN == true {
token = "\(NSUserDefaults.standardUserDefaults().valueForKey(TOKEN)!)"
}
let headers = [
"Access": "application/json",
"Authorization": "Bearer \(token)"
]
let dataUrl = "\(BASE_URL)\(slug)\(provider)\(section)\(dynamic)"
print(headers)
print(dataUrl)
if networkManager!.isReachable {
currentRequest?.cancel()
dispatch_async(dispatch_get_global_queue(priority, 0)) {
if let url = NSURL(string: dataUrl) {
let request = Alamofire.request(.GET, url, headers: headers)
request.validate().responseJSON { response in
switch response.result {
case .Success:
if let data = response.result.value as! [String: AnyObject]! {
let receivedData = self.dataManager.parseDataToFilms(data, someClass: anyClass)
completion(receivedData)
}
case .Failure(let error):
print("Alamofire error: \(error)")
if error.code == 1001 {
self.goToNoConnectionVC()
}
print("canceled")
}
}
}
}
} else {
goToNoConnectionVC()
}
}
}
Ve daha önceki downloadData isteği iptal gerekir, yeni bir başladığında, currentRequest kullanan iptal etmek çalıştı? .cancel(), ama yardımcı olmuyor.
Daha önce NSOperationsBlock kullanarak işlemi iptal etmeye çalıştı, ancak geçerli işlemi iptal etmiyor.
Artık kullanıcı arayüzünü engelliyorum, böylece kullanıcı başka bir istek gönderemiyor. Ama bu isteği iptal etmek isterseniz
Pls,
Hızlı ve programlamada oldukça yeniyim. İstekleri dizide nasıl saklayabilir ve iptal edebilirim? –
Bir dizide saklayabilirsiniz, ancak önce öneri kontrol et – ciccioska