我在UITableViewCell里面有一个UIButton连接到一个播放AVAudio文件的方法,如下所示:
cell.playButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
cell.playButton.tag = indexPath.row;
[cell.playButton addTarget:self action:@selector(useSelectedFile:) forControlEvents:UIControlEventTouchUpInside];
,useSelectedFile方法如下所示:
-(void) useSelectedFile:(id)sender{
int tag = [(UIButton *)sender tag];
NSDictionary *audioFileInformation = [audioCellsArray objectAtIndex:tag];
NSData *selectedAudioFile = [audioFileInformation objectForKey:@"Data"];
NSError *error;
NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"sound.caf"];
[[NSFileManager defaultManager] removeItemAtPath:filePath error:nil];
[selectedAudioFile writeToFile:filePath atomically:YES];
NSURL *file = [NSURL fileURLWithPath:filePath];
_audioPlayerForButton = [[AVAudioPlayer alloc] initWithContentsOfURL:file error:&error];
if (error)
NSLog(@"Error: %@",
[error localizedDescription]);
else
[_audioPlayerForButton play];
}
我可以录制文件并将其保存在数据库中并将数据拉出来,但是我无法播放它们。使用当前代码我得到:错误:操作无法完成。 (OSStatus错误1954115647。)
当我尝试使用时:
_audioPlayerForButton = [[AVAudioPlayer alloc] initWithData:selectedAudioFile error:&error];
按下播放按钮时会出现此错误:错误:操作无法完成。 (OSStatus错误2003334207。)
检查我从模拟器写入磁盘的文件似乎可能已损坏?文件系统不会将其显示为正常.caf文件(带音乐笔记的黑色)的音频文件,但作为一个带有QuickTime符号的小白色文件,QuickTime将无法播放。
我尝试在命令行上使用macerror statuscode,但它只返回“未知错误”。
任何人都有任何想法或提示,如何解决这个问题并让我的文件播放?
答案 0 :(得分:0)
事实证明我是对的,在比较文件之后我可以清楚地看到数据不同,所以我将文件存储为BLOB
更改为TEXT
,并使用< em> base64 class 从这里开始:iPhone SDK base64 encode / decode