Objective C将对象从一个NSMutableArray复制到另一个“无效的左值赋值”

时间:2009-08-18 05:48:00

标签: iphone objective-c arrays oop nsmutablearray

我正在尝试使一个数组中的对象与另一个数组相等。如果我单独设置每个属性,它工作正常,但我想设置一个对象等于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];

(是否可以在不进行转换的情况下设置数组对象?)

感谢您抽出时间阅读和回复。干杯!

1 个答案:

答案 0 :(得分:2)

这将设置数组的索引指向同一个对象。我希望你明白这不会复制对象。

[[Hands objectAtIndex:wp] replaceObjectAtIndex:nc withObject:[[Draws objectAtIndex:wp] objectAtIndex:0]];