2016-07-28 129 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唯一? –