Ios 如何更改默认请求完成队列?
我正在做一个有很多API的应用程序,每个API的响应都必须导入到核心数据中。我知道默认情况下,Alamofire完成处理程序将位于主线程中。我想把它改成后台线程,就像我在请求完成时做核心数据导入操作一样。你能指导我如何在请求完成时将我的后台线程设置为默认线程吗Ios 如何更改默认请求完成队列?,ios,swift,macos,afnetworking,alamofire,Ios,Swift,Macos,Afnetworking,Alamofire,我正在做一个有很多API的应用程序,每个API的响应都必须导入到核心数据中。我知道默认情况下,Alamofire完成处理程序将位于主线程中。我想把它改成后台线程,就像我在请求完成时做核心数据导入操作一样。你能指导我如何在请求完成时将我的后台线程设置为默认线程吗 我不喜欢在每个API请求中设置它,相反,我想在单个位置设置它,就像我在AFNetworking中经常做的那样,它在AFHTTPSessionManager中有一个名为completionQueue的属性,因此我为AFHTTPSession
我不喜欢在每个API请求中设置它,相反,我想在单个位置设置它,就像我在AFNetworking中经常做的那样,它在AFHTTPSessionManager中有一个名为completionQueue的属性,因此我为AFHTTPSessionManager创建了子类,然后我轻松地更改了默认线程。我在Alamofire中找不到类似的东西。请为我提供更好的解决方案Almofire不提供更改完成队列的方法。但您可以扩展
请求
类并添加自定义响应方法:
extension Request {
public func responseOnCustomQueue(completionHandler: (NSURLRequest?, NSHTTPURLResponse?, NSData?, NSError?) -> Void) -> Self {
let queue = dispatch_get_main_queue() // custom queue for all requests
return self.response(queue: queue, completionHandler: completionHandler)
}
}
这样,您就不必每次都指定自定义队列。Almofire不提供更改完成队列的方法。但您可以扩展
请求
类并添加自定义响应方法:
extension Request {
public func responseOnCustomQueue(completionHandler: (NSURLRequest?, NSHTTPURLResponse?, NSData?, NSError?) -> Void) -> Self {
let queue = dispatch_get_main_queue() // custom queue for all requests
return self.response(queue: queue, completionHandler: completionHandler)
}
}
这样,您就不必每次都指定自定义队列