Come scaricare un file wav dal web in una posizione sul iPhone utilizzando NSFileHandle e NSURLConnection?

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

Domanda

Vorrei scaricare un file wav da un servizio Web, della cache su iPhone e riprodurre utilizzando AVAudioPlayer. Utilizzando NSFileHandle e NSURLConnection sembra una soluzione praticabile quando si tratta di file relativamente grandi. Tuttavia, dopo aver eseguito l'applicazione nel simulatore non vedo alcun file salvato nella directory definita (NSHomeDirectory / tmp). Qui di seguito è il mio codice di base. Dove sto sbagliando? Tutti i pensieri sono apprezzati!

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

}
È stato utile?

Soluzione

NSFileHandle fileHandleForWritingAtPath: richiede il file di esistere già. Come stai creando il file?

Altri suggerimenti

Dove è il tuo

- (void)connectionDidFinishLoading:(NSURLConnection *)connection

delegato?

questo è dove si dovrebbe scrivere / salvare il file.

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

questo è dove si aggiunge il dato si riceve.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top