0

早上好,我做了一个 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:]: 对象 0x8939030 的关键收藏夹值为 nil'

为什么会这样?谢谢!

最大限度

4

4 回答 4

2

您的数据(收藏夹)似乎尚未写入您的默认值。您可以通过运行以下命令强制保存默认值:

[[NSUserDefaults standardUserDefaults] synchronize];
于 2012-04-22T06:34:40.193 回答
1

对于关键“收藏夹”,newDefaults 为零。

于 2012-04-22T06:14:59.530 回答
1

在这一行

favorites = [[NSMutableArray alloc]initWithArray:[newDefaults mutableArrayValueForKey:@"favorites"] copyItems:YES];

nil正在分配给favorites。这样做的原因是,newDefaults它只是建立在上一行之上,并且是空的。

于 2012-04-22T06:25:13.663 回答
1

当您的应用完成加载时,添加以下内容:

NSMutableArray *array = [[NSMutableArray alloc]init]; 
[defaults setObject:array forKey:@"favorites"]; 
[defaults synchronize];
于 2012-04-22T06:50:59.263 回答