2014-02-23 2 views
1

내가 원했던 것은 NSURLConnection입니다.NSURLSession 추적 다중 요청을 받으시겠습니까?

  • 나는 NSOperation 객체
  • 설정 새로운 정의를 만드는 것이 내 NSMutalbeRequestoperation 마녀가 작업 ... 거기
  • 을 대기 할 준비가되면 트리거 나는 NSURLConnectiondelegate 방법과 그 내가 함께있을 것입니다 모든 진행 상황, 완료, 오류 등을 추적 할 수 있습니다 ...

그래서 요점은 요청이 자체적으로 operation에 포함되어 있고 delegate 전화는 거기에서 일어나는 은 요청 연산 개체와 NSURLConnection delegate 사이에 일대일 관계가 있습니다.

NSURLSession으로 어떻게해야하는지 잘 모르겠습니다. NSURLSession을 사용하면 수행하고자하는 모든 GET 호출에 필요한 모든 dataTask를 트리거 할 수 있습니다.

+ (NSURLSession *)sessionWithConfiguration:(NSURLSessionConfiguration *)configuration delegate:(id <NSURLSessionDelegate>)delegate delegateQueue:(NSOperationQueue *)queue; 

그래서 내가 해결하기 위해 노력하고있는 문제는 내가 모든 대리자 호출 일이 하나의 개체 만이있는 경우 나 여러 GET 요청의 진행 상황을 추적 할 수있는 방법 입니다 : 그러나 나는 설정 이 호출을 사용하여 세션을 공유? 나는 거기에 오직 하나의 대표단을 가지고 있습니다. 그래서 지금은 1 세션, 1 대의원 객체가 있지만 동시에 여러 GET 요청이 발생했습니다.

각 작업에는 "taskIdentifier"가 있지만 그 작업에는 사전이 있어야합니다. 예를 들어

대리자를 호출 할 때 :

- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data 

가 호출 될 때, 나는 사전에 작업을 조회해야 할 것 그리고 내가 사전에서 얻을하려는 개체에 대한 참조를 가질 수있다 그 하나의 요청의 진행 상황을 추적 할 필요가 ...

이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 이것이 어떻게 이루어져야하는지 누구도 알고 있습니까?

+0

사전 솔루션이 정상적으로 들립니다. 어떤 종류의 추적이 필요합니까/상황이 문제가 될 것이라고 생각합니까? – Wain

+0

각 데이터 작업이 자체의 변경 가능한 데이터에 추가해야하므로 사용자가해야 할 일은 정확히 수행해야합니다. – matt

+0

가능한 복제본 [완성 된 \ NSURLSessionDataTask \에서 데이터를 얻으려면 어떻게해야합니까?] (http://stackoverflow.com/questions/21924483/how-do-i-get-the-data-from-a- finished-nsurlsessiondatatask) – matt

답변

-2

그래서

지금까지 NSDictionary 방식을 사용하고 있습니다. 이를 통해 NSURLSession 델리게이트는 올바른 데이터 작업을 수행하고 동시에 여러 요청을 처리 할 수 ​​있습니다.

이것이 최선의 방법인지 확신 할 수 없지만 내 앱이 현재 많은 요청을 실행하고 있으며 정상적으로 작동하는 것 같습니다.

+3

: ps가이 구현 코드를 공유 할 수 있습니까? – user694688

+1

또한이 구현을보고 싶습니다. – katit

0

기본적으로 각이

for task 1 

    [dataTask setAccessibilityLabel:@"label1"]; 

    for task 2 

    [dataTask setAccessibilityLabel:@"label2"]; 

를 요청하고 위임에 방법이

if([dataTask.accessibilityLabel isEqual: @"label1"]) 
    { 
     // handle data from first task 

    } 

    if([dataTask.accessibilityLabel isEqual: @"label2"]) 
    { 
     // handle data from second task 

    } 
0

당신은 또한 자신의 서브 클래스로 NSURLSessionDataTask를 인스턴스화 할 수있는 접근성 라벨 확인을위한 접근성 라벨을 설정해야 할 일 세션 대리자의 task.originalRequest에서 검색 할 수있는 NSURLRequest입니다.

+0

이 아이디어가 마음에 들었고 NSURLRequest에서 잘 작동합니다. 그러나 NSMutableURLRequest에 대해 동일한 아이디어를 시도했지만 실패했습니다. task.originalRequest를 내 하위 클래스로 캐스팅 한 후 NSMutableURLRequest에서 알 수없는 메서드로 중단되었습니다. – user1055568

관련 문제