Tôi có một lớp 2.0 ApiManager Swift sử dụng Alamofire 2.0 với init sau:Manager với Swift 2.0 Alamofire bị hủy
var manager:Manager
init() {
var defaultHeaders = Alamofire.Manager.sharedInstance.session.configuration.HTTPAdditionalHeaders ?? [:]
defaultHeaders["Authorization"] = "Bearer \(UserAccount.sharedInstance.token)"
let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
configuration.HTTPAdditionalHeaders = defaultHeaders
manager = Alamofire.Manager(configuration: configuration)
}
Ví dụ chức năng:
func getMe(completion:(jsonObject: NSDictionary) ->()) {
manager.request(.GET, Constants.apiURL + "me").responseJSON { request, response, result in
print(self.manager) //THIS LINE FIXES IT
switch result {
case .Success(let json):
completion(jsonObject: json as! NSDictionary)
case .Failure(let data, let error):
print("Error: \(__FUNCTION__)\n", data, error)
}
}
}
Các lỗi tôi nhận được:
Error Domain=NSURLErrorDomain Code=-999 "cancelled"
Dường như yêu cầu bị hủy vì người quản lý đang được deallocated. Việc thêm lệnh in ngăn cản người quản lý khỏi bị deallocated và nó hoạt động hoàn hảo sau đó. Nhưng tôi đang cố gắng tìm một giải pháp tốt hơn.
Bất kỳ trợ giúp sẽ được đánh giá cao!
Cảm ơn ! Điều đó đã giải quyết được vấn đề của tôi. Tôi vừa thêm dòng 'static let sharedInstance = ApiManager()' vào lớp của tôi rồi gọi nó giống như bạn đã nói. Rất biết ơn sự giúp đỡ của bạn! – Groarus
@Groarus, bạn đã sử dụng 'static let sharedInstance = ApiManager()' hoặc 'static let sharedInstance = ApiManager' ?. Việc đầu tiên ném một lỗi. –