iOS 응용 프로그램의 네트워킹에 Alamofire를 사용합니다. iOS 7 이상에서이 앱을 실행해야합니다. 나는 가 상태 표시 줄의 네트워크 활동을 나타내는 원하는, 그래서이 구조체 만든 :상태 표시 줄에 네트워크 활동을 표시하는 방법
struct ActivityManager {
static var activitiesCount = 0
static func addActivity() {
if activitiesCount == 0 {
UIApplication.sharedApplication().networkActivityIndicatorVisible = true
}
activitiesCount++
}
static func removeActivity() {
if activitiesCount > 0 {
activitiesCount--
if activitiesCount == 0 {
UIApplication.sharedApplication().networkActivityIndicatorVisible = false
}
}
}
}
는하지만 나도 몰라, 코드 addActivity()
및 removeActivity()
방법에서 전화. 나는 모든 요청에 그것들을 쓰고 싶지 않다. 나는 그들이 원할 때마다 자동으로 부름을 받기를 원한다. 나는 또한 시도
순수 NSURLSession
및 NSURLSessionTask
사용을 확장 :
extension NSURLSessionTask {
func resumeWithActivity() {
ActivityManager.addAction()
self.resume()
}
}
public extension NSURLSession {
func OwnDataTaskWithRequest(request: NSURLRequest!, ownCompletionHandler: ((NSData!, NSURLResponse!, NSError!) -> Void)?) -> NSURLSessionDataTask! {
return self.dataTaskWithRequest(request, completionHandler: { (data, response, error) in
ActivityManager.removeAction()
ownCompletionHandler!(data, response, error)
})
}
}
그때 나는이처럼 사용 :
이
var session: NSURLSession = NSURLSession(configuration: config, delegate: self, delegateQueue: nil)
session.OwnDataTaskWithRequest(request) { (data, response, error) -> Void in
// some logic here
}.resumeWithActivity()
그러나이 방법이 작동하지 않습니다. iOS 7에서는 NSURLSession
확장자가 표시되지 않습니다. 이 경우 bug report (sample project)을 만들었습니다.
내 목표에 도달하는 방법을 조언 해 주실 수 있습니까? Alamofire가 있든 없든?