早上好,我制作了一个IBAction方法,将一些对象保存到数组中:
-(IBAction)saveToFav:(id)sender
{
NSUserDefaults *newDefaults = [NSUserDefaults standardUserDefaults];
favorites = [[NSMutableArray alloc]initWithArray:[newDefaults mutableArrayValueForKey:@"favorites"] copyItems:YES];
// check if array already contains an object
if (![favorites containsObject:self.title])
{
[favorites addObject:self.title];
}
[newDefaults setObject:favorites forKey:@"favorites"];
}
然而,当我调用此方法应用程序崩溃时出现错误:
[NSKeyValueSlowMutableArray getObjects:range:]:key的值 对象0x8939030的最爱是nil'
为什么会这样? 谢谢!
最高
答案 0 :(得分:2)
您的数据(收藏夹)似乎尚未写入您的默认设置。您可以通过运行此方法强制保存默认值:
[[NSUserDefaults standardUserDefaults] synchronize];
答案 1 :(得分:1)
对于关键的“收藏夹”,newDefaults为零。
答案 2 :(得分:1)
在这一行
favorites = [[NSMutableArray alloc]initWithArray:[newDefaults mutableArrayValueForKey:@"favorites"] copyItems:YES];
nil
正被分配到favorites
。原因是newDefaults
只是建立在前一行上并且是空的。
答案 3 :(得分:1)
当您的应用完成加载时,请添加以下内容:
NSMutableArray *array = [[NSMutableArray alloc]init];
[defaults setObject:array forKey:@"favorites"];
[defaults synchronize];