Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 更改dict数组中键的值_Ios_Nsmutablearray_Nsmutabledictionary - Fatal编程技术网

Ios 更改dict数组中键的值

Ios 更改dict数组中键的值,ios,nsmutablearray,nsmutabledictionary,Ios,Nsmutablearray,Nsmutabledictionary,我有一个数组,它有不同的数据,一个是celcius记录的温度。当用户将默认设置更改为华氏度时,我需要更改collectionView中显示的信息数组。程序可以正确编译,但是当视图加载时,编译器会崩溃,没有错误,只会以绿色高亮显示该行,并在右角显示线程1:breakpoint1.1 突出显示的行如下所示 [dict setObject:[NSNumber numberWithInteger:number] forKey:@"temp"]; 我也只是试图绕过这个问题,但没有成功: [dict se

我有一个数组,它有不同的数据,一个是celcius记录的温度。当用户将默认设置更改为华氏度时,我需要更改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的任何内部配置都将非常好,谢谢。:-)

我猜数组中的dictionary实例都是不可变的
NSDictionary
对象。只是类型转换不会将它们转换为可变的。试试下面的方法

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

  • 但我的建议是始终只在一个单元中保持温度,用户倾向于使用更多的单元。只有在需要显示时,才可以使用用户选择的单位进行检查,然后进行计算并刷新

    你能发布一个locationArray吗?并添加expection断点,查看其确切停止位置以及完整错误是什么?