如何更新NSMutableDictionary。我的代码不起作用

时间:2010-05-30 05:37:21

标签: cocoa nsmutabledictionary

我使用。填充了一个数组。

arrSettings = [[NSMutableArray alloc] initWithContentsOfFile:[self settingsPath]];

该文件是一个plist,其根作为数组,然后是一个字典,其中三个键被定义为数字。我也尝试将键设置为字符串。

我使用。

在视图上显示plist文件中的值
diaper = [[arrSettings objectAtIndex:0] objectForKey:@"Diaper Expenses"];
oil = [[arrSettings objectAtIndex:0] objectForKey:@"Oil Used"];
tree = [[arrSettings objectAtIndex:0] objectForKey:@"Wood Used"]; 

此代码工作正常,字典中的值将分配给变量并显示它们。用户可以进行更改,然后按保存按钮。

我使用此代码提取数组的字典部分,以便我可以更新它。 editDictionary的赋值有效。我已经仔细检查了包括案例在内的关键名称,这是正确的。

editDictionary = [[NSMutableDictionary alloc] init];
editDictionary = [arrSettings objectAtIndex:0];
NSNumber *myNumber = [NSNumber numberWithFloat:diaperAmount];
[editDictionary setValue:myNumber forKey:@"Diaper Expenses"];
myNumber = [NSNumber numberWithFloat:oilAmount];    
[editDictionary setValue:myNumber forKey:@"Oil Used"];
myNumber = [NSNumber numberWithFloat:treeAmount];
[editDictionary setValue:myNumber forKey:@"Wood Used"];

在这个例子中,我使用了nsnumber。但我也尝试将xxxAmount字段作为SetValue的一部分 而不是创建NSNumber。两种实施都不奏效。

发生了几件奇怪的事情。有时前两个setvalue语句有效,但最后一个setvalue因EXC_BAD_ACCESS失败而失败。其他时候第一个setValue失败并出现相同的错误。我不知道为什么前两个有时会工作。

我不知道接下来该做什么。我已经尝试了几个实现,但没有一个工作。 另外,在调试器中如何显示editDictionary元素。我可以看到editDictionary,但我不知道如何显示各个元素。

1 个答案:

答案 0 :(得分:2)

你有2个编辑editDictionary,第二个删除第一个。也许你的意思是editDictionary = [[arrSettings objectAtIndex:0] mutableCopy]