Sie werden etwas mehr Code einführen müssen, um ein Download-Statusanzeige, Bar. Im Moment laden Sie die Daten mit [NSData dataWithConentsOfURL:...]
herunter. Stattdessen erstellen Sie eine Klasse, die ein Objekt NSURLConnection
verwendet, um Daten herunterzuladen, diese Daten in einem MSMutableData-Objekt zu sammeln und Ihre Benutzeroberfläche entsprechend zu aktualisieren. Sie sollten den HTTP-Header ContentLength
und die Aktualisierungen - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data;
verwenden können, um den Status des Downloads zu ermitteln.
Hier sind einige relevanten Methoden:
- (void) startDownload
{
downloadedData = [[NSMutableData alloc] init];
connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];
}
- (void)connection:(NSURLConnection *)c didReceiveResponse:(NSURLResponse *)response
{
totalBytes = [response expectedContentLength];
}
// assume you have an NSMutableData instance variable named downloadedData
- (void)connection:(NSURLConnection *)c didReceiveData:(NSData *)data
{
[downloadedData appendData: data];
float proportionSoFar = (float)[downloadedData length]/(float)totalBytes;
// update UI with proportionSoFar
}
- (void)connection:(NSURLConnection *)c didFailWithError:(NSError *)error
{
[connection release];
connection = nil;
// handle failure
}
- (void)connectionDidFinishLoading:(NSURLConnection *)c
{
[connection release];
connection = nil;
// handle data upon success
}
Ich persönlich denke, dass der einfachste Weg, dies zu tun ist, um eine Klasse zu erstellen, die die oben genannten Methoden implementiert generische Daten-Downloads und Schnittstelle mit dieser Klasse zu tun.
Dies sollte genug sein, um Sie zu bekommen, was Sie brauchen.