Wie lade ich mit NSFileHandle und NsurlConnection eine WAV -Datei vom Web auf einen Ort auf dem iPhone herunter?

StackOverflow https://stackoverflow.com/questions/2535001

Frage

Ich möchte eine WAV -Datei von einem Webdienst herunterladen, sie auf dem iPhone durchspeichern und mit Avaudioplayer abspielen. Die Verwendung von NSFileHandle und NsurlConnection scheint eine praktikable Lösung beim Umgang mit relativ großen Dateien zu sein. Nachdem ich die App im Simulator ausgeführt habe, sehe ich keine gespeicherte Datei im definierten Verzeichnis (NSHOMEDirectory/TMP). Unten ist mein Grundcode. Wo mache ich falsch? Alle Gedanken werden geschätzt!

#define TEMP_FOLDER [NSHomeDirectory() stringByAppendingPathComponent:@"tmp"]

- (void)downloadToFile:(NSString*)name
{
    NSString* filePath = [[NSString stringWithFormat:@"%@/%@.wav", TEMP_FOLDER, name] retain];
    self.localFilePath = filePath;

    // set up FileHandle
    self.audioFile = [[NSFileHandle fileHandleForWritingAtPath:localFilePath] retain];
    [filePath release];

    // Open the connection
    NSURLRequest* request = [NSURLRequest 
                             requestWithURL:self.webURL
                             cachePolicy:NSURLRequestUseProtocolCachePolicy
                             timeoutInterval:60.0];
    NSURLConnection* connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];

}

#pragma mark -
#pragma mark NSURLConnection methods

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData*)data
{
    [self.audioFile writeData:data];
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError*)error
{
    NSLog(@"Connection failed to downloading sound: %@", [error description]);
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    [connection release];
    [audioFile closeFile];

}
War es hilfreich?

Lösung

NSFileHandle fileHandleForWritingAtPath: erfordert, dass die Datei bereits existiert. Wie erstellen Sie die Datei?

Andere Tipps

Wo ist dein

- (void)connectionDidFinishLoading:(NSURLConnection *)connection

delegieren?

Hier sollten Sie die Datei schreiben/speichern.

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData*)data

Hier fügen Sie die von Ihnen erhaltenen Daten an.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top