Comment télécharger un fichier wav à partir du Web vers un emplacement sur iPhone en utilisant NSFileHandle et NSURLConnection?
-
22-09-2019 - |
Question
Je veux télécharger un fichier wav à partir d'un service Web, le cache sur l'iPhone et la lecture à l'aide AVAudioPlayer. L'utilisation NSFileHandle et NSURLConnection semble une solution viable lorsque le traitement des dossiers relativement importants. Cependant, après l'exécution de l'application dans le simulateur, je ne vois pas de fichier enregistré dans le répertoire défini (NSHomeDirectory / tmp). Voici mon code de base. Où suis-je tort? Toutes les pensées sont appréciés!
#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];
}
La solution
NSFileHandle fileHandleForWritingAtPath:
nécessite le fichier existe déjà. Comment allez-vous créer le fichier?
Autres conseils
Où est votre
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
délégué
est où vous devriez écrire / enregistrer le fichier.
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData*)data
est où vous ajoutez les données que vous recevez.