0

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

并且尝试不进行强制转换也会产生无效的左值错误,即:

        [[Hands objectAtIndex:wp] objectAtIndex:nc] = [[Draws objectAtIndex:wp] objectAtIndex:0];

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

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

4

1 回答 1

2

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

[[Hands objectAtIndex:wp] replaceObjectAtIndex:nc withObject:[[Draws objectAtIndex:wp] objectAtIndex:0]];
于 2009-08-18T05:52:12.110 回答