为什么我的代码不能填写字典(和tableview)?

时间:2014-02-03 15:19:14

标签: ios dictionary

当加载我的iOs应用程序时,会检查它是否是应用程序的第一次加载,如果是,则设置tableview的默认单元格。但是,代码不起作用。

在我看来,确实加载了:

NSDictionary *dict;

//if the app HASN'T loaded before
if(![[NSUserDefaults standardUserDefaults] boolForKey:@"hasLoaded"])
{
    //note that the app has loaded
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"hasLoaded"];

    //set the defaults

    //value1
    [dict setValue:@"some string" forKey:@"one"];

    [[NSUserDefaults standardUserDefaults] setValue:dict forKey:@"tableCells"];
}

//now add all to the table view
[tableView insertRowsAtIndexPaths:[[[NSUserDefaults standardUserDefaults] objectForKey:@"tableCells"] allKeys] withRowAnimation:UITableViewRowAnimationFade];

我要做的是,当我的应用第一次加载时,设置一些带有关联值的默认值。但是,当我使用NSLog(@“%@”,[dict allKeys])记录字典的密钥时,在设置密钥后立即生效。

编辑1:尝试了一些答案,现在我在使用NSLog时得到了一些东西,但我的桌面视图没有被填充。

编辑2:一切正常,谢谢!

3 个答案:

答案 0 :(得分:1)

您必须使用setObject:代替setValue:

[dict setObject:@"some string" forKey:@"one"];

不要忘记致电:

NSMutableDictionary *dict = [NSMutableDictionary new];

感谢@ Bruno关于NSMutableDictionary的评论。

答案 1 :(得分:1)

看起来您永远不会创建NSDictionary,因此dict将为空。

答案 2 :(得分:0)

您尚未创建dict实例。尝试

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];