我试图记录一个音频,并保存每个录制音频的路径在数组中。我使用这个代码保存音频:NSMutableArray不存储元素
(IBAction)AudioRecord:(id)sender {
[self.AudioRecorder record];
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 =[[NSMutableArray alloc]init];
AudioArray =[defaultsForArrayA arrayForKey:@"myAudio"];
NSString *Audiopath=[audioFileURL path];
[AudioArray addObject:Audiopath];
defaultsAudio=defaultsForArrayA;
[defaultsAudio setObject:AudioArray forKey:@"myAudio"];
[defaultsAudio synchronize];
if (AudioArray.count==0)
[email protected]"nothing";
else
_check.text=[NSString stringWithFormat:@"%lu", (unsigned long)AudioArray.count];
我使用if语句只是检查的对象被保存在数组中。但事实证明什么都没有被保存!
当我删除此行:
AudioArray =[defaultsForArrayA arrayForKey:@"myAudio"];
阵列工作。但我需要这条线。
首先,名称变量以小写字母开头。其次,当你做'defaultsAudio = defaultsForArrayA;'时,你用'defaultsAudio = [NSUserDefaults standardUserDefaults];'覆盖你获取的值。第三,当你做'AudioArray = [defaultsForArrayA arrayForKey:@“myAudio”];'你用'AudioArray = [[NSMutableArray alloc] init];'覆盖你设置的值。 –
检查AudioArray是否为零(nil.count将== 0)。我的猜测是'[defaultsAudio setObject:AudioArray forKey:@“myAudio”];'返回nil,而不是填充或空白的NSMutableArray。 – ansible
@ansible ooh是的,它是零! – user3191725