我已经使用填充了一个数组。
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,但我不知道如何显示各个元素。