2016-07-28 2 views
-2

У меня есть 10 NSURLSessionDownloadTask экземпляров для скачивания 10 файлов одновременно.Как инициализировать объект, который находится внутри nsmutablearray?

Каждый экземпляры называются по-разному (для экс. DownloadTask1, downloadTask2 и т.д ..)

Я инициализирован их следующим образом,

self.downloadTask1 = [self.session downloadTaskWithURL:[NSURL url1]] 
self.downloadTask2 = [self.session downloadTaskWithURL:[NSURL url2]] 
self.downloadTask3 = [self.session downloadTaskWithURL:[NSURL url3]] 
. 
. 
self.downloadTask10 = [self.session downloadTaskWithURL:[NSURL url10]] 

Это занимает 10 строк. Теперь мой вопрос:

Могу ли я сделать это в одной строке, добавив каждый NSURLSessionDownloadTask экземпляров в NSMutableArray.

Это то, что я пытался

for(i=0;i<10;i++){ 
[self.downloadTaskArray objectAtIndex:i] = [self.session downloadTaskWithURL:[NSURL [self.urlArray objectAtIndex:i]] 
} 

Я знаю, что описанный выше метод является неправильным. Ошибка, с которой я столкнулся, - Выражение не присваивается.

Надеюсь, вы поняли мою проблему. Можно ли добиться того, что я пытаюсь?

Примечание: Я определенно хочу использовать другое имя для downloadTask , потому что мне нужно, чтобы определить их позже в моем проекте

ответ

2

Попробуйте код ниже:

for(i=0;i<10;i++){ 
    [self.downloadTaskArray addObject:[self.session downloadTaskWithURL:[NSURL [self.urlArray objectAtIndex:i]]]; 
} 
+0

Что делать, если я хочу повторно инициализировать конкретный объект? – Ganesh

+0

[self.downloadTaskArray insertObject: newObject atIndex: index]; NewObject - это объект, который вы перезапускаете, а индекс - его позиция. – zylenv

0
for(i=0;i<10;i++) 
{ 
    NSURLSessionDownloadTask* task = [self.session downloadTaskWithURL:[self.urlArray objectAtIndex:i]]; 
    [self.downloadTaskArray addObject:task]; 
} 
+0

Мне нужно другое имя экземпляра .... Ваш код будет называть все экземпляры как ** task ** – Ganesh

+0

Тогда вам не нужен массив –

0

Try этот код:

for(int i=0;i<10;i++) 
    { 
     NSURLSessionDownloadTask* task = [self.session downloadTaskWithURL:[self.urlArray objectAtIndex:i]]; 
     task.taskIdentifier = i;//To keep track of download task in current session.(an identifier for this task, assigned by and unique to the owning session) 
     [self.downloadTaskArray addObject:task]; 
    } 

Вы можете повторно инициализировать объект, обратившись к нему из taskIdentifier.

+1

, это не достаточно для доступа к задаче просто [self.downloadTaskArray objectAtIndex:] ? –

+0

Он хотел что-то уникальное, связанное с задачей, чтобы идентифицировать их. Таким образом, taskIdentifier может быть хорошим вариантом. –

+0

не является объектомAtIndex уникальным? –

Смежные вопросы