迭代NSMutableArray并更改object的属性

时间:2014-03-28 21:44:04

标签: ios loops nsmutablearray

我有一张NSMutableArray有20张牌,在这个例子中是红色的。

Card对象有一个名为playable的属性。如果该卡可播放,则其值为IsPlayable,如果不可用,则为IsNotPlayableCard对象也有一个属性value,从1到20。

值为11的卡片始终为IsPlayable,如果下一张卡片与当前卡片之间的差异为1(cardUp/ cardDown),我会更改Card playable属性到IsPlayable

当我开始游戏时,假设我的数组中有5个Card个对象(称为_redPlayerCards); 11,2,3,13和9.当我从堆栈中绘制一张卡片时,它会被添加到_redPlayerCards,这里是我创建的循环得到不同结果的地方。

当我绘制值为{10}的Card时,卡片10和9的playable属性会更改为IsPlayable,因此11,10和9 IsPlayable。但是,如果我在之后绘制值为Card的值为Card,则IsPlayable 12和13不会更改为IsNotPlayable,而是保留IsPlayable。只有在我播放值11后,值12才会变为playable

我真的不知道出了什么问题。看起来每个11以下的值都工作正常,并将IsPlayable属性更改为playable,而高于11的每个值都不会将IsPlayable属性更改为redTableCards。它只会在我玩牌时更改它(将牌放在桌子上NSMutableArray,这也是Card)。代码有什么问题?

value IsPlayable 11在方法外更改为//Playable red cards NSMutableArray *playableRedCards = [NSMutableArray array]; Card *redPlayerCard = [[Card alloc]init]; BOOL changedRed = YES; for(int x = 0; x < [_redPlayerCards count]; x++) { redPlayerCard = [_redPlayerCards objectAtIndex:x]; while (changedRed) { changedRed = NO; for (redPlayerCard in _redPlayerCards) { NSNumber *cardValue = redPlayerCard.value; if (redPlayerCard.playable == IsPlayable) { [playableRedCards addObject:redPlayerCard.value]; //NSLog(@"red is playable"); } else { NSNumber *cardUp = @(cardValue.integerValue + 1); NSNumber *cardDown = @(cardValue.integerValue - 1); if ([playableRedCards containsObject:cardUp] || [playableRedCards containsObject:cardDown] || [[[Game game] redTableCards] containsObject:cardUp] || [[[Game game] redTableCards] containsObject:cardDown]) { changedRed = YES; redPlayerCard.playable = IsPlayable; [playableRedCards addObject:redPlayerCard.value]; //NSLog(@"playable reds: %@", playableRedCards); } } } } } 。其余部分由此代码更改:

{{1}}

0 个答案:

没有答案