我正在尝试更改多维数组中的值,但却出现编译错误:
warning: passing argument 2 of 'setValue:forKey:' makes pointer from integer without a cast
这是我的内容数组:
NSArray *tableContent = [[NSArray alloc] initWithObjects:
[[NSArray alloc] initWithObjects:@"a",@"b",@"c",nil],
[[NSArray alloc] initWithObjects:@"d",@"e",@"f",nil],
[[NSArray alloc] initWithObjects:@"g",@"h",@"i",nil],
nil];
这就是我试图改变价值的方式:
[[tableContent objectAtIndex:0] setValue:@"new value" forKey:1];
解决方案:
[[tableContent objectAtIndex:0] setValue:@"new val" forKey:@"1"];
所以数组键是一个字符串类型 - 有点奇怪,但很高兴知道。
答案 0 :(得分:11)
NSMutableArray *tableContent = [[NSMutableArray alloc] initWithObjects:
[NSMutableArray arrayWithObjects:@"a",@"b",@"c",nil],
[NSMutableArray arrayWithObjects:@"d",@"e",@"f",nil],
[NSMutableArray arrayWithObjects:@"g",@"h",@"i",nil],
nil];
[[tableContent objectAtIndex:0] replaceObjectAtIndex:1 withObject:@"new object"];
您不希望alloc+init
用于子阵列,因为子阵列的保留计数太高(alloc
为+1,然后再为+1)插入外部数组)。
答案 1 :(得分:2)
您正在创建不可变数组,并尝试更改存储在其中的值。请改用NSMutableArray。
答案 2 :(得分:1)
你想要NSMutableArray的insertObject:atIndex:
或replaceObjectAtIndex:withObject:
(如果已存在,前者将推回现有元素,而后者将替换它但不适用于尚未存在的索引占据)。消息setValue:forKey:
为其第一个参数采用值类型,为其第二个参数采用NSString。你传递的是一个整数而不是NSString,它永远不会有效。
答案 3 :(得分:0)
很抱歉回答1年半的问题:D
我遇到了同样的问题,最后我通过计算元素来解决它,然后执行addObject
推送到数组元素