我正在尝试存储一个包含NSUserDefaults
中两个词典的字典。
NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
NSDictionary *defDict = [def dictionaryRepresentation];
defaultTopics = [[NSArray alloc] initWithObjects:@"Animals",
@"Numbers",
@"AroundTown",
@"Actions", nil];
defaultValues = [[NSArray alloc] initWithObjects:@1, @0, @0, @0, nil];
NSDictionary *dd = [[NSDictionary alloc] initWithObjects:defaultValues forKeys:defaultTopics];
NSDictionary *de = [[NSDictionary alloc] initWithObjects:@[dd, dd] forKeys:@[@"English", @"Indonesian"]];
[defDict setValue:de forKey:@"UnlockedTopics"];
[def synchronize];
在此之后,NSLog(@"%@", [def dictionaryRepresentation]);
打印正确的字典,只要我不退出应用程序,一切都按预期进行。但是,如果我退出应用并重新启动,
[defDict objectForKey:@"UnlockedTopics"]
总是零。是什么原因,以及如何解决这个问题?
答案 0 :(得分:4)
字典词典没有被存储的原因是你永远不会存储它。你所做的只是设置字典的键。你在打电话
[defDict setValue:de forKey:@"UnlockedTopics"];
但这与在NSUserDefaults 中设置任何@"UnlockedTopics"
键值对不同。如果你想写NSUserDefaults,写信给它 - 例如将setObject:forKey:
发送到NSUserDefaults 。