我有一个Card对象,它有一个标记isFlipped。我将它们存储在NSMutableArray中。我想检查我的数组中的两个对象是否有标志,如果有,我删除它们。 据我所知,我需要迭代数组,但如何获得另一个带有标志的对象?
- (void) checkCards
{
for (Card *card in cards) {
if (card.flipped)
{
if ( ??? )
{
}
}
}
}
答案 0 :(得分:1)
存储要在变量中删除的卡片的索引,如果设置了两个变量的值,则只需删除卡片。请参阅以下
- (void) checkCards {
int card1 = -1;
int card2 = -1;
for(int i = 0; i < [cards count]; i++) {
Card *card = [cards objectAtIndex: i];
if(card.flipped) {
if(card1 == -1) {
card1 = i;
} else {
card2 = i;
}
if(card1 != -1 && card2 != -1) {
// remove cards
break;
}
}
}
}
答案 1 :(得分:1)
我会使用NSArray方法,indicesOfObjectsPassingTest:。您可以像这样使用它:
NSIndexSet *indexSet = [cards indexesOfObjectsPassingTest:^BOOL (Card *obj, NSUInteger idx, BOOL *stop) {
return obj.isFlipped = YES;
}];
[cards removeObjectsAtIndexes:indexSet];
这将删除其isFlipped为YES的所有卡,因此如果可能超过2,并且您只想删除2,那么您必须遍历indexSet并在删除2后停止。