我正在尝试在数组中保存音频数量,然后根据数组索引的数量播放其中任何一个。我有一个问题: 我是否需要更改每个新元素的路径? 例如:
NSURL *audioFileURL = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingString:@"audioRecording.m4a"]];
然后每次,我记录并存储在此路径中并将路径保存为数组的元素。 这是否意味着我的数组中的所有元素都是相同的?这意味着即使我改变了数组的索引,我也会听到相同的音频?
以下是更好解释的代码:
- (IBAction)AudioRecord:(id)sender {
[self.AudioRecorder record];
[self.timer invalidate];
[self.AudioProgress setHidden:YES];
NSURL *audioFileURL = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingString:@"audioRecording.m4a"]];
self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:audioFileURL error:nil];
NSUserDefaults *audioDefaults= [NSUserDefaults standardUserDefaults];
[audioDefaults setURL:audioFileURL forKey:@"saveAudio"];
[audioDefaults synchronize];
NSUserDefaults *defaultsAudio=[NSUserDefaults standardUserDefaults];
NSUserDefaults *defaultsForArrayA =[NSUserDefaults standardUserDefaults];
NSMutableArray *AudioArray =[[defaultsForArrayA arrayForKey:@"myAudio"] mutableCopy];
if (!AudioArray) {
AudioArray =[[NSMutableArray alloc]init];
}
NSString *Audiopath=[audioFileURL path];
[AudioArray addObject:Audiopath];
defaultsAudio=defaultsForArrayA;
[defaultsAudio setObject:AudioArray forKey:@"myAudio"];
[defaultsAudio synchronize]; }
在这里我尝试读取数组的元素:
- (IBAction)PlayAudio:(id)sender {
NSUserDefaults *audioDefaults= [NSUserDefaults standardUserDefaults];
audioArray2 =[[audioDefaults arrayForKey:@"myAudio"] mutableCopy];
audioPath=[audioArray2 objectAtIndex:index];
loadAudio= [NSURL URLWithString:[audioPath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
AVAudioPlayer *AvAudioPlayer= [[AVAudioPlayer alloc] initWithContentsOfURL:loadAudio error: nil];
[self setAudioPlayer:AvAudioPlayer ];
[self.AudioPlayer play];
self.timer = [NSTimer scheduledTimerWithTimeInterval:0.25
target:self
selector:@selector(updateProgress)
userInfo:nil
repeats:YES];
[self.AudioProgress setHidden:NO]; }
根据此代码,所有路径都相同,我在所有元素中听到相同的音频。无论我是读取index0还是1,它都是相同的元素!那不是我想做的事情:(
任何帮助?
答案 0 :(得分:0)
如果您在保存时未更改名称,则每次都只覆盖同一文件。所以,是的,阵列中的所有曲目都将发挥相同的作用。
考虑创建自定义文件夹以保存音频,并使用时间戳或UUID作为文件的名称。