在iOS中将mp3音频字符串转换为.mp3音频文件

时间:2014-12-10 14:02:50

标签: ios

我从服务器

获得了.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:不会在临时目录中创建音频文件。

1 个答案:

答案 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);
}