2016-06-21 64 views
0

我正在做一个有很多API的应用程序,每个API的响应都必须导入到核心数据中。我知道Alamofire完成处理程序将默认在主线程中。我想将其改为后台线程,因为我会在请求完成时执行核心数据导入操作。你能指导我如何设置我的后台线程作为请求完成中的默认线程?如何更改默认请求完成队列?

我不想设置此在每个API请求,而是我想设置这样的一个地方,因为我总是在AFNetworking做其中有物业在AFHTTPSessionManager称为completionQueue所以我创建了子类AFHTTPSessionManager然后我轻松更改默认线程。我在Alamofire找不到类似的东西。请用更好的解决方案指导我

回答

3

Almofire不提供更改完成队列的方法。但是,您可以扩展Request类,并添加自定义的响应方法:

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) 
    } 
    } 

这样你就不必每次都指定自定义队列。