我有一个具有不同数据的数组,一个是以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的任何内部都会非常感谢。 : - )
答案 0 :(得分:2)
我猜你的数组中的字典实例都是不可变的NSDictionary
对象。只是打字输入不会把它们变成可变的。请尝试以下
NSMutableDictionary
但我的建议是将温度始终保持在一个单位,用户倾向于使用更多的单位。只有当您需要显示它时,请检查用户选择的单元进行计算并刷新它。