【发布时间】:2014-03-26 19:49:04
【问题描述】:
所以我在保存数组时遇到了 NSUserDefaults 的问题。到目前为止,我的所有代码都可以正常工作,但是一旦我尝试将数组保存在 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 时才会发生。其他一切似乎都运行良好,当我早些时候添加单个字符串时它运行良好。如果我能管理它,我真的很想用它来存储我的数组。
【问题讨论】:
标签: ios objective-c nsuserdefaults