繁体   English   中英

将路径存储在数组中时更改路径的名称

[英]changing the name of the path when storing it in an array

我正在尝试将音频数量保存在数组中,然后根据数组索引的数量播放其中的任何音频。 我有一个问题:是否需要更改每个新元素的路径? 例如:

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,它都是同一个元素! 那不是我想要做的:(

有什么帮助吗?

如果在保存时不更改名称,则每次都将覆盖同一文件。 因此,是的,阵列中的所有曲目都将播放相同的曲目。

考虑创建一个自定义文件夹来保存音频,并使用时间戳或UUID作为文件名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM