nsfilehandleとnsurlconnectionを使用して、WebからiPhoneの場所にWAVファイルをダウンロードする方法は?
-
22-09-2019 - |
質問
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];
}
解決
NSFileHandle fileHandleForWritingAtPath:
ファイルが既に存在する必要があります。ファイルをどのように作成していますか?
他のヒント
あなたはどこにいますか
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
代表?
これは、ファイルを書き込み/保存する必要がある場所です。
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData*)data
これは、受信したデータを追加する場所です。
所属していません StackOverflow