2014-12-11 16 views
9

Tôi đang làm việc với Alamofire. Theo dõi nhận xét của Mattt ở một trong số closed issues trên GitHub, tôi đã thử một cơ chế dựa trên NSURLProtocol để đặt cờ UIApplication.sharedApplication().networkActivityIndicatorVisible.Tùy chỉnh NSURLProtocol để hiển thị/ẩn NetworkActivityIndicator

Tuy nhiên, sau khi đăng ký giao thức tùy chỉnh của tôi với Alamofire của tiềm ẩn NSURLSessionConfiguration tôi đã bị mắc kẹt khá nhanh chóng kể từ khi Alamofire không tiếp xúc với nhiều lớp SessionDelegate của nó.

Có cách nào đơn giản để thông báo cho tùy chỉnh NSURLProtocol yêu cầu đã hoàn thành mà không cần sao chép phần lớn việc triển khai Alamofire hiện có trong số NSURLProtocol của tôi không?

+0

Bất kỳ may mắn nào với điều này? – Mikael

Trả lời

0

Một cách khác nhau để làm việc đó (không thực hiện NSURLProtocol chiều) sẽ được tạo một API mà sẽ có một phương pháp executeRequest:

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

Tất nhiên, tất cả các yêu cầu của bạn sẽ phải được thực hiện sử dụng API mới được tạo.

+0

Nhưng điều này sẽ phá vỡ ngay sau khi bạn có hai yêu cầu đồng thời, phải không? –

+0

Có thực sự. Có hai yêu cầu, nếu một trong số chúng kết thúc sớm hơn, chỉ báo hoạt động sẽ ẩn trước khi yêu cầu thứ hai kết thúc. Nhưng điều này có thể dễ dàng sửa chữa. Bạn có thể giữ số lượng yêu cầu đang hoạt động và chỉ ẩn chỉ báo hoạt động khi số lượng yêu cầu đang hoạt động là 0. – GicaGG

Các vấn đề liên quan