我正在尝试使一个数组中的对象与另一个数组相等。如果我单独设置每个属性,它工作正常,但我想设置一个对象等于antoher而不编写一个函数来运行每个属性。
-(void)DrawCard: (int) wp{
[self GetNc :(wp)];
if (nc > 0){
((card*) [[Hands objectAtIndex:wp] objectAtIndex:nc]) = ((card*) [[Draws objectAtIndex:wp] objectAtIndex:0])
}
}
(wp代表哪个玩家。所有GetNc都通过查找当前在Hands中使用的卡对象的最高索引来设置整数nc(对于新卡)。
那不会编译,但设置一个单独的属性会:
((card*) [[Hands objectAtIndex:wp] objectAtIndex:nc]).suit = ((card*) [[Draws objectAtIndex:wp] objectAtIndex:0]).suit;
在没有强制转换的情况下尝试也会产生无效的l值错误,即:
[[Hands objectAtIndex:wp] objectAtIndex:nc] = [[Draws objectAtIndex:wp] objectAtIndex:0];
(是否可以在不进行转换的情况下设置数组对象?)
感谢您抽出时间阅读和回复。干杯!
答案 0 :(得分:2)
这将设置数组的索引指向同一个对象。我希望你明白这不会复制对象。
[[Hands objectAtIndex:wp] replaceObjectAtIndex:nc withObject:[[Draws objectAtIndex:wp] objectAtIndex:0]];