Wie lade ich mit NSFileHandle und NsurlConnection eine WAV -Datei vom Web auf einen Ort auf dem iPhone herunter?
-
22-09-2019 - |
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];
}
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