当加载我的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:一切正常,谢谢!
答案 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];