¿Cómo descargar un archivo WAV de la web a una ubicación en iPhone usando nsfileHandle y nsurlconnection?

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

Pregunta

Quiero descargar un archivo WAV de un servicio web, almacenarlo en caché en el iPhone y reproducirlo usando AvaudioPlayer. El uso de NSFileHandle y NsurlConnection parece una solución viable cuando se trata de archivos relativamente grandes. Sin embargo, después de ejecutar la aplicación en el simulador, no veo ningún archivo guardado en el directorio definido (nshomedirectory/tmp). A continuación se muestra mi código básico. ¿Dónde estoy haciendo mal? ¡Se agradecen cualquier pensamiento!

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

}
¿Fue útil?

Solución

NSFileHandle fileHandleForWritingAtPath: requiere que el archivo ya exista. ¿Cómo está creando el archivo?

Otros consejos

Donde Esta tu

- (void)connectionDidFinishLoading:(NSURLConnection *)connection

¿delegar?

Aquí es donde debe escribir/guardar el archivo.

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

Aquí es donde agrega los datos que recibe.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top