2014-01-14 3 views
2

웹 사이트에서 파일을 다운로드 할 수있는 iOS 앱이 있습니다. 나는 그들을 관리하기 위해 Downloads 클래스에 NSURLSession을 만들었습니다. Downloads 클래스에는 DownloadItem 개체를 사용하여 현재 및 이전 다운로드를 모두 추적하는 NSMutableArray이 있습니다. 나는이 설정에 만족하지 않는다.여러 개의 NSURLSessionTasks 구성

현재 모든 다운로드의 대표자로 Downloads 클래스가 있어야합니다. 각 NSURLSessionDownloadTask의 대표를 DownloadItem 개체에 할당 할 방법이 없습니다. 그래서, 내 Downloads 개체에 할당 된 유지하고 다음 메시지를 전달하는 방법을 DownloadItem 알아 내야합니다.

현재 DownloadstasksDictionary이라는 NSMutableDictionary를 만들고 taskIdentifier을 키로 사용합니다.

return [self.tasksDictionary objectForKey:[NSNumber numberWithInteger:task.taskIdentifier]]; 

이것은 작동하는 것처럼 보이지만 가장 효율적인 방법으로 보이지 않습니다. 또한 작성한 첫 번째 작업 식별자가 0이라는 사실을 알았 기 때문에 완성 된 작업과 첫 번째 작업의 차이를 구분하기가 어려울 것으로 우려됩니다.

이러한 정보를 더 잘 추적 할 수있는 방법이 있습니까? 새로운 델리게이트를 태스크에 할당하는 방법이 있습니까? 당신이 완료되면

NSMutableArray *completedDownloads; 
NSMutableDictionary *activeDownloadTasks; // @(taskID) => DownloadItem 

, activeDownloadTasks에서 DownloadItem 팝업 completedDownloads에 추가 :

답변

0

아마도 이러한 인스턴스 변수가 있습니다.

그렇지 않으면 당신은 복숭아 소리가납니다.

내가에있어 있지만,이 구문은 (당신의 예를 사용하여) 도움이 될 수 있습니다 :

return self.tasksDictionary[@(task.taskIdentifier)];

+0

이것은 내가 뭐하는 거지 본질적를하지만 난 확인을 가지고 좋은 옳은 일을하는 것. –

관련 문제