在dict数组中更改key的值

时间:2013-10-23 06:42:06

标签: ios nsmutablearray nsmutabledictionary

我有一个具有不同数据的数组,一个是以celcius记录的温度。当用户将默认设置更改为fahrenheit时,我需要在collectionView中显示时更改信息数组。程序正确编译,但是当视图加载时,编译器崩溃没有错误,只是突出显示绿色的行,并在右上角说话线程1:breakpoint1.1

突出显示的行是

[dict setObject:[NSNumber numberWithInteger:number] forKey:@"temp"];

我刚试过但没有成功只是为了绕过这个问题:

[dict setObject:@"11" forKey:@"temp"];

我循环遍历数组并更改数据的代码是:

changedArray = [[NSMutableArray alloc] initWithCapacity:50];
for (NSMutableDictionary *dict in locationArray) {
    if ( [[dict objectForKey:@"site"] isEqual:[defaults objectForKey:@"location"]] ) {
        NSInteger number = [[dict objectForKey:@"temp"] integerValue];
        number = ((number * 1.8) + 32);
        [dict setObject:[NSNumber numberWithInteger:number] forKey:@"temp"];
        [changedArray addObject:dict];
    }
}

如果我删除了三行代码,改变了dict中的温度值,它就会编译并正确运行。这个ios noob的任何内部都会非常感谢。 : - )

1 个答案:

答案 0 :(得分:2)

我猜你的数组中的字典实例都是不可变的NSDictionary对象。只是打字输入不会把它们变成可变的。请尝试以下

  1. 迭代数组
  2. 找到正确的词典
  3. 形成一个可变的NSMutableDictionary
  4. 编辑可变的
  5. 更新回数组(数组也需要是一个可变的数组)
  6. 但我的建议是将温度始终保持在一个单位,用户倾向于使用更多的单位。只有当您需要显示它时,请检查用户选择的单元进行计算并刷新它。