2016-07-28 7 views
-2

Ich habe 10 NSURLSessionDownloadTask Instanzen zum gleichzeitigen Download von 10 Dateien.Wie initialisiert man ein Objekt, das sich innerhalb von nsmutablearray befindet?

Jede Instanzen unterschiedlich benannt (zB. DownloadTask1, downloadTask2, etc ..)

ich sie initialisiert wie folgt

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]] 

Diese 10 Zeilen nimmt. Jetzt ist meine Frage,

Kann ich das in der einzelnen Linie tun, indem ich jede NSURLSessionDownloadTask Instanzen in NSMutableArray hinzufüge.

ist das, was ich

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

Ich weiß, dass das obige Verfahren nicht stimmt. Der Fehler, dem ich gegenüberstand, ist Ausdruck ist nicht zuweisbar.

Ich hoffe, Sie haben mein Problem verstanden. Ist es möglich zu erreichen, was ich versuche?

Anmerkung: Ich möchte auf jeden Fall andere Namen für downloadTask , weil ich sie in meinem Projekt unter

Antwort

2

Versuchen Sie den Code später identifizieren verwenden müssen:

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

Was ist, wenn ich ein bestimmtes Objekt neu initialisieren möchte? – Ganesh

+0

[self.downloadTaskArray insertObject: newObject atIndex: index]; Das newObject ist das Objekt, das Sie neu initiieren, und der Index ist seine Position. – zylenv

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

Ich brauche einen anderen Instanznamen .... Ihr Code nennt alle Instanzen als ** Task ** – Ganesh

+0

Dann brauchen Sie kein Array –

0

Try Dieser Code:

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]; 
    } 

Sie können ein Objekt erneut initialisieren, indem Sie es über taskIdentifier aufrufen.

+1

ist es nicht genug, um einfach auf die Task zugreifen zu können [self.downloadTaskArray objectAtIndex:] ? –

+0

Er wollte etwas Einzigartiges im Zusammenhang mit der Aufgabe, sie zu identifizieren. So kann TaskIdentifier eine gute Option sein. –

+0

ist nicht objectAtIndex eindeutig? –