Ios AVAudioPlayer INITWITH DATA返回nil
我使用下面的代码用NSData初始化了一个AVAudioPlayer对象,它在我的主包中有一个mp3的数据Ios AVAudioPlayer INITWITH DATA返回nil,ios,avaudioplayer,nsdata,Ios,Avaudioplayer,Nsdata,我使用下面的代码用NSData初始化了一个AVAudioPlayer对象,它在我的主包中有一个mp3的数据 NSError *error; NSString *filePathForBgAudio = [[NSBundle mainBundle] pathForResource:@"beebuzz10" ofType:@"mp3"]; NSData *bgAudioData = [NSData dataWithContentsOfFile:filePathForBgAudio]; bgAudio
NSError *error;
NSString *filePathForBgAudio = [[NSBundle mainBundle] pathForResource:@"beebuzz10" ofType:@"mp3"];
NSData *bgAudioData = [NSData dataWithContentsOfFile:filePathForBgAudio];
bgAudioPlayer = [[AVAudioPlayer alloc] initWithData:bgAudioData error:&error];
bgAudioPlayer.delegate = self;
我已经在
.h
文件中声明了bgAudioPlayer
。但当我通过设置断点进行检查时,我发现在这一行之后bgAudioPlayer=[[AVAudioPlayer alloc]initWithData:bgAudioData error:&error]
bgAudioPlayer仍显示为nil
。但是,filepathforbgaudo
和bgAudioData
已正确初始化并具有数据。只有bgAudioPlayer
是nil
。上面代码中的问题是什么?如何纠正这种情况?#导入@property(强、非原子)AVAudioPlayer*audioPlayer;您使用的是initWithData:error:
方法,该方法加载MP3文件的NSData对象,而他使用的是直接指向捆绑包中此文件的initWithContentsURL:error:
- (void)viewDidLoad
{
[super viewDidLoad];
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]
pathForResource:@"bubble"
ofType:@"mp3"]];
NSError *error;
_audioPlayer = [[AVAudioPlayer alloc]
initWithContentsOfURL:url
error:&error];
if (error)
{
NSLog(@"Error in audioPlayer: %@",
[error localizedDescription]);
} else
{
_audioPlayer.delegate = self;
[_audioPlayer prepareToPlay];
}
}
- (IBAction)playsound:(id)sender
{
[_audioPlayer play];
}
NSError *error;
NSURL *filePathForBgAudio1 =[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"beebuzz10" ofType:@"mp3"]];
//NSString *filePathForBgAudio = [[NSBundle mainBundle] pathForResource:@"beebuzz10" ofType:@"mp3"];
// NSData *bgAudioData = [NSData dataWithContentsOfFile:filePathForBgAudio1];
bgAudioPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:filePathForBgAudio1 error:&error];