Comment télécharger un fichier wav à partir du Web vers un emplacement sur iPhone en utilisant NSFileHandle et NSURLConnection?

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

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

}
Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top