NSDictionary没有设置值

时间:2014-05-30 15:49:53

标签: objective-c

我得到字典的零值。 我相信这里有一些我找不到的蠢事。 第一次用户默认是nil,也许这就是问题?

 NSDate *date=[NSDate date];
     //read
    NSMutableDictionary *dic=[[NSMutableDictionary alloc] init];
    dic=[[NSUserDefaults standardUserDefaults] objectForKey:@"list"];
    [dic setObject:dataToSave forKey:date];
    NSLog(@"%@",dic);//show nil where "dataToSave" is not nil.

1 个答案:

答案 0 :(得分:1)

您正在使用新词典初始化dic var,然后使用NSUserDefaults条目重新初始化它,我猜这是零。

NSDate *date=[NSDate date];
//read
NSMutableDictionary *dic = [[NSUserDefaults standardUserDefaults] dictionaryForKey:@"list"].mutableCopy;
if(!dic)
{
    dic = [[NSMutableDictionary alloc] init];
}
[dic setObject:dataToSave forKey:date];

// if you want to save back to NSUserDefaults, you will need to do this
[[NSUserDefaults standardUserDefaults] setObject:dic forKey:@"list"];

修改

正如rmaddy指出的那样,这不起作用,因为你不能在保存到NSStrings的词典中使用非NSUserDefaults作为键。

为了使其正常工作,date var需要用字符串替换。

<强> EDIT2

修改后的答案允许NSMutableDictionary