2014-01-14 45 views
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,它都是相同的元素!這不是我想要做:(

任何幫助嗎?

回答

0

如果您在保存,那麼你每次只需覆蓋相同的文件。所以,是的,所有的曲目不改名字在陣列中將播放相同的文件

考慮創建一個自定義文件夾來保存您的音頻並使用時間戳或UUID作爲文件的名稱

相關問題