1

我有一个具有不同数据的数组,其中一个是以摄氏度记录的温度。当用户将默认设置更改为华氏温度时,我需要更改在 collectionView 中显示的信息数组。程序可以正确编译,但是当视图加载时,编译器会崩溃而没有错误,只是以绿色突出显示该行并在右上角说 Thread 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];
    }
}

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

4

1 回答 1

2

我猜你数组中的字典实例都是不可变的NSDictionary对象。只是类型转换不会将它们变成可变的。尝试以下

  1. 遍历数组
  2. 找到正确的字典
  3. 形成一个可变的NSMutableDictionary
  4. 编辑可变的
  5. 更新回数组(数组也需要是可变的)

但我的建议是始终将温带保持在一个单位中,即用户倾向于使用更多的单位。只有当您需要显示它时,检查用户选择的单位进行计算并刷新它。

于 2013-10-23T07:12:17.833 回答