2016-07-28 105 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行。現在我的問題是,

我可以通過在NSMutableArray中添加每個NSURLSessionDownloadTask實例在單行中做到這一點。

這就是我想

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

我需要不同的實例名稱....你的代碼,將其命名爲所有實例爲** **任務然後 – Ganesh

+0

你不需要一個數組 –

0

嘗試此代碼:

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

是不是objectAtIndex唯一? –