Как загрузить wav-файл из Интернета в папку на iPhone с помощью NSFileHandle и NSURLConnection? - PullRequest
1 голос
/ 29 марта 2010

Я хочу загрузить файл wav из веб-службы, кэшировать его на iphone и воспроизвести с помощью AVAudioPlayer. Использование NSFileHandle и NSURLConnection представляется жизнеспособным решением при работе с относительно большими файлами. Однако после запуска приложения в симуляторе я не вижу сохраненный файл в указанном каталоге (NSHomeDirectory / tmp). Ниже мой основной код. Где я делаю не так? Любые мысли приветствуются!

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

}

Ответы [ 2 ]

3 голосов
/ 29 марта 2010

NSFileHandle fileHandleForWritingAtPath: требует, чтобы файл уже существовал. Как вы создаете файл?

0 голосов
/ 29 марта 2010

Где твой

- (void)connectionDidFinishLoading:(NSURLConnection *)connection

делегат?

Здесь вы должны написать / сохранить файл.

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

здесь вы добавляете полученные данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...