Tôi có một lớp NetworkRequest, nơi mà tất cả các yêu cầu alamofire tôi thực hiện:nhanh chóng, alamofire hủy yêu cầu trước
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()
}
}
}
Và tôi cần phải hủy bỏ yêu cầu downloadData trước, khi mới bắt đầu, cố gắng để hủy bỏ sử dụng currentRequest? .cancel(), nhưng nó không giúp được gì.
Đã cố gắng hủyHoạt động bằng NSOperationsBlock, nhưng nó không hủy hoạt động hiện tại.
Tôi chặn giao diện người dùng ngay bây giờ để người dùng không thể gửi yêu cầu khác. Nhưng điều này là không đúng, gây ra một số lỗi sau ...
Xin vui lòng, giúp
Tôi khá mới trong việc nhanh chóng và lập trình. Làm thế nào tôi có thể lưu trữ các yêu cầu trong mảng và hủy bỏ chúng? –
Bạn có thể lưu nó vào một mảng, nhưng trước tiên hãy kiểm tra đề xuất của tôi – ciccioska