我試圖記錄一個音頻,並保存每個錄製音頻的路徑在數組中。我使用這個代碼保存音頻: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