2012-11-13 63 views
0

我有一個卡片對象,有一個標誌isFlipped。我將它們存儲在一個NSMutableArray中。我想檢查我的數組中的兩個對象是否有標誌,如果他們這樣做,我將它們刪除。 據我所知,我需要迭代數組,但我如何獲得另一個帶有標誌的對象?如何檢查具有相同標誌的對象的NSMutableArray?

- (void) checkCards 
{ 
    for (Card *card in cards) { 

     if (card.flipped) 
     { 
      if (???) 
      { 

      } 

     } 
    } 
} 
+0

記住第一個是在搜索第二個的時候? –

+0

@HotLicks我該怎麼做? – Dvole

+0

那麼,首先使用循環的常規索引,所以你有一個循環索引。然後有一個「標誌1索引」值,你初始化爲-1。掃描找到第一個標誌。如果「標記1索引」爲-1,則將其更改爲當前索引並繼續掃描。如果「標誌1索引」不是-1,則同時具有標誌索引值。 –

回答

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

我會使用NSArray方法indexesOfObjectsPassingTest :.您可以使用它像這樣:

NSIndexSet *indexSet = [cards indexesOfObjectsPassingTest:^BOOL (Card *obj, NSUInteger idx, BOOL *stop) { 
     return obj.isFlipped = YES; 
    }]; 
    [cards removeObjectsAtIndexes:indexSet]; 

這將刪除所有的卡,其isFlipped是YES,所以如果有可能會超過2個,而你只是想去掉2,那麼你就必須通過迭代indexSet並在刪除後停止2.

相關問題