我有一个NSMutableArray
我的脑海中AppDelegate
,我正在试图将它保存到NSUserDefaults
。 该NSMutableArray
(strainsfinal)包含收藏项目列表。 我想这个列表保存,即使应用程序被关闭,然后重新出现。 有谁知道为什么我的代码不工作(不保存我的数据)? 见下文:
AppDelegate.m
-(void)updateStrains:(NSDictionary *)item
{
NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
NSData *dataSave = [currentDefaults objectForKey:@"strains"];
if (strainsfinal != nil)
{
NSArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:dataSave];
if (oldSavedArray != nil)
strainsfinal = [[NSMutableArray alloc] initWithArray:oldSavedArray];
else
strainsfinal = [[NSMutableArray alloc] init];
}
}
编辑:Appdelegate.m所以我改变了我上面的方法下面的方法(我认为它应该工作),但应用程序崩溃,他说:“终止应用程序由于未捕获的异常‘NSInvalidArguementException’,理由是:“NSConcreteAttributedString initwithString:零“值”。
我在想什么?
-(void)updateStrains:(NSDictionary *)item {
NSData *dataSave = [NSKeyedArchiver archivedDataWithRootObject:strainsfinal];
[[NSUserDefaults standardUserDefaults] setObject:dataSave forKey:@"strains"];
NSNotificationCenter* nc = [NSNotificationCenter defaultCenter];
[nc postNotificationName:@"arrayupdated" object:self userInfo:nil];
NSLog(@"updated strains %@",strainsfinal);
}