0
我試圖將數組中的音頻數據保存到數組中,然後根據數組索引的數量播放它們中的任何一個。我有一個問題: 是否需要更改每個新元素的路徑? 例如:在將數組存儲到數組中時更改路徑的名稱
NSURL *audioFileURL = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingString:@"audioRecording.m4a"]];
則每次,我記錄並存儲在該路徑和該路徑保存爲數組的一個元素。 這是否意味着我陣列中的所有元素都是相同的?這意味着即使我更改了數組的索引,我也會聽到相同的音頻?
這裏是一個更好的explanasion代碼:
- (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,它都是相同的元素!這不是我想要做:(
任何幫助嗎?