我从服务器
获得了.643的base64字符串 NSData *audioData = [[NSData alloc]initWithBase64EncodedString:[dictResult
objectForKey:@"voiceString"] options:0];
这里我获得了音频数据对象audioData(30571bytes)。
使用以下代码我试图将nsdata对象保存到临时目录中的.mp3文件。
NSURL *audioFileURL = [NSURL fileURLWithPath:[NSTemporaryDirectory()
stringByAppendingString:objAddXpnseconfigFromRcnt.bAudioName]];
[audioData writeToFile:[audioFileURL absoluteString] atomically:YES];
但上面的代码不起作用?
方法 writeToFile:atomically:不会在临时目录中创建音频文件。
答案 0 :(得分:1)
问题在于您正在创建的路径:
[NSTemporaryDirectory() stringByAppendingString:objAddXpnseconfigFromRcnt.bAudioName]
当然应该
[NSTemporaryDirectory() stringByAppendingPathComponent:objAddXpnseconfigFromRcnt.bAudioName]
如您所见,我使用了stringByAppendingPathComponentL:
,它将正确附加文件名。
为什么要为文件路径创建NSURL
只将其转换回路径?
最好不要在一行中写入所有内容,并始终使用具有error:
参数的方法。这将使调试更容易,下面的代码是相同的,但更容易调试:
NSString *tempPath = NSTemporaryDirectory();
NSString *fileName = [tempPath stringByAppendingPathComponent:objAddXpnseconfigFromRcnt.bAudioName];
NSURL *audioFileURL = [NSURL fileURLWithPath:fileName];
NSError *error = nil;
if (![audioData writeToURL:audioFileURL options:NSDataWritingAtomic error:&error] {
NSLog(@"Failed to write MP3 data: %@", error);
}