¿Cómo descargar un archivo WAV de la web a una ubicación en iPhone usando nsfileHandle y nsurlconnection?
-
22-09-2019 - |
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];
}
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.