我有一个可变数组“myArray”,如:
{
IdPregunta = 1;
Respuestas = (
{
IdResp = 1;
Valor = 1;
},
{
IdResp = 2;
Valor = 0;
}
);
},
作为表格视图的来源。
当用户点击按钮进入单元格时,我需要更改布尔值,
我没有运气使用setValue:forKey
方法:
NSMutableDictionary * dict = [[NSMutableDictionary alloc]init];
dict = [[[ myArray valueForKey:@"Respuestas"]objectAtIndex:0]objectAtIndex:1];
[dict setValue:[NSNumber numberWithBool:true] forKey:@"Valor"];
App没有任何“可读”消息崩溃(线程1:breackpoint 1,3 3,3 5,3 ....)。
我尝试用
进行更改[dict setValue:[NSNumber numberWithBool:true] forKey:@"Valor"];
同样的结果。
答案 0 :(得分:1)
首先,无法保证dict
在运行时确实是NSMutableDictionary
。您在
NSMutableDictionary* dict = [[NSMutableDictionary alloc] init];
会立即在下面的行中被覆盖:
dict = [[[myArray valueForKey: @"Respuestas"] objectAtIndex: 0] objectAtIndex: 1];
现在,dict
的价值是另一回事。如果你很幸运,dict
是此行之后NSMutableDictionary
的一个实例,但我不会赌它...这会产生效果
[dict setValue: [NSNumber numberWithBool:true] forKey: @"Valor"];
不可预测的。通过dict
:
NSLog
的值
NSLog(@"Value of dict is now %@", dict);
另一点是,
的结果[[[myArray valueForKey: @"Respuestas"] objectAtIndex: 0] objectAtIndex: 1]
如果我正确地读了你的示例数据结构,那么似乎是未定义的:
[myArray valueForKey: @"Respuestas"]
产生一个数组
(
{
IdResp = 1;
Valor = 1;
},
{
IdResp = 2;
Valor = 0;
}
);
周围的
[... objectAtIndex: 0]
产生字典
{
IdResp = 1;
Valor = 1;
}
和最外面的电话
[... objectAtIndex: 1]
对我来说似乎没有定义(因为我们得到了一个字典,而不是一个数组)。你的最后一个示例行
[valor setValue:[NSNumber numberWithBool:true] forKey:@"Valor"];
我无法解释。什么是valor
?