所以我在保存數組時遇到NSUserDefaults問題。我所有的代碼一直工作到這一點,但只要我試圖將數組保存在NSUserDefaults中,我開始出現問題,主要是因爲某些原因它現在不能保存。終止應用程序由於未捕獲的異常「NSInvalidArgumentException」,NSUserDefaults?
- (IBAction)unwindToList:(UIStoryboardSegue *)segue
{
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MMMM dd, yyyy"];
AG_AddItemViewController *source = [segue sourceViewController];
AG_Storage *item = source.store;
NSDate *dateCreated = item.creationDate;
NSString *todayString = [dateFormat stringFromDate:self.todayDate];
NSString *dateCreatedString = [dateFormat stringFromDate:dateCreated];
NSString *tomorrowString = [dateFormat stringFromDate:self.tomorrowsDate];
NSString *yesterdayString = [dateFormat stringFromDate:self.yesterdaysDate];
//Set up file storage!
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (item.itemName != nil) {
if ([dateCreatedString isEqualToString:todayString]) {
[self.mainArray addObject:item];
[tableView reloadData];
[defaults setObject:self.mainArray forKey:todayString];
[defaults synchronize];
NSLog(@"Saved");
}
else if ([dateCreatedString isEqualToString:tomorrowString]){
[self.tomorrowArray addObject:item];
[tableView reloadData];
NSLog(@"THIS WORKED TOO :D");
}
else if ([dateCreatedString isEqualToString:yesterdayString]){
[self.yesterdayArray addObject:item];
[tableView reloadData];
NSLog(@"THIS WORKED");
}
else{
}
}
}
mainarray
和其它可變陣列都聲明爲在接口屬性,所以他們不應該會造成這個問題。
2014-03-26 15:36:46.561 AgendaBk[32702:a0b] <AG_Storage: 0x8cc2c90>
2014-03-26 15:36:46.563 AgendaBk[32702:a0b] Attempt to set a non-property-list object (
"<AG_Storage: 0x8cc2c90>"
) as an NSUserDefaults value for key March 26, 2014
2014-03-26 15:36:46.565 AgendaBk[32702:a0b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSUserDefaults setObject:forKey:]: attempt to insert non-property list object (
"<AG_Storage: 0x8cc2c90>") for key March 26, 2014'
libc++abi.dylib: terminating with uncaught exception of type NSException
需要注意的是,當我試圖讓去NSUserDefaults的這個問題只發生。其他一切似乎都工作正常,並且當我之前添加單個字符串時它工作正常。我真的想用這個來存儲我的數組,儘管我可以管理它。
http://stackoverflow.com/questions/10305659/not-sure-how-to-handle-terminating-app-due-to-uncaught-exception-nsinvalidargu –