我正在与Alamofire合作。在GitHub上的closed issues中的Mattt评论之后,我尝试了一种基于NSURLProtocol
的机制来设置UIApplication.sharedApplication().networkActivityIndicatorVisible
标志。
但是,在使用Alamofire的底层NSURLSessionConfiguration
注册自定义协议(protocol)后,由于Alamofire并未公开其SessionDelegate
类的大部分内容,因此我很快陷入了困境。
有没有一种简单的方法可以通知自定义NSURLProtocol
请求已完成,而无需在我的NSURLProtocol
内部重现Alamofire的许多现有实现?
最佳答案
一种不同的实现方式(不实现NSURLProtocol方式)是创建一个具有 executeRequest 方法的API:
func executeRequest(method: Alamofire.Method, url: NSURL, parameters: [String: String]?, headers: [String : String]?) {
// Show activity indicator on status bar
UIApplication.sharedApplication().networkActivityIndicatorVisible = true
let request = manager.request(method, url, parameters: parameters, encoding: .JSON, headers: headers)
.responseJSON {
response in
...
// Hide activity indicator on status bar
UIApplication.sharedApplication().networkActivityIndicatorVisible = false
}
}
当然,您所有的请求都必须使用新创建的API执行。