1

Web サービスから 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];

}
4

2 に答える 2

3

NSFileHandle fileHandleForWritingAtPath:ファイルがすでに存在している必要があります。ファイルはどのように作成していますか?

于 2010-03-29T00:02:54.637 に答える
0

あなたはどこですか

- (void)connectionDidFinishLoading:(NSURLConnection *)connection

委任?

これは、ファイルを書き込み/保存する場所です。

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

これは、受け取ったデータを追加する場所です。

于 2010-03-29T00:15:05.593 に答える