2012-10-30 2 views
1

Я только начинаю использовать Objective C, и мне было интересно, какой был правильный синтаксис, чтобы выбрать всех других игроков, чтобы установить свойство isActive равным NO. Благодаря!Выбор всех объектов игроков ObjectiveC

- (void) playerBuzzedIn: (XGPlayer *) activePlayer 
{ 
    if (activePlayer) { 
     activePlayer.isActive = YES; 
    } 
    else 
     //set all other isActive = NO 
    self.currentGameState = results; 
} 

Im думая, что-то вроде этого, является то, что право:

for (XGPlayer *player in self.players) { 
player.isActive = NO; 
} 
+0

Если в классе реализации '-playerBuzzedIn:', у вас есть '' players' @ property', который является '' NSArray' из объектов XGPlayer', то, да, код вы предложили верно. Вы пробовали? –

+0

да, это работает, спасибо! – JProg

ответ

0

Сначала вам нужен список всех игроков; позволяет предположить, что это:

NSMutableArray *_allplayers = ...; 

Тогда в вашем методе вы можете установить все игроки в неактивное кроме того, кто просто гудел в:

- (void) playerBuzzedIn: (XGPlayer *) activePlayer 
{ 
    if (activePlayer) 
    { 
     for (XGPlayer *player in _allPlayers) 
     { 
      player.isActive = activePlayer == player; // Or perhaps [activePlayer isEqual:player] ? 
     } 
    } 
    self.currentGameState = results; 
} 

Другой подход заключается, чтобы держать указатель на текущий активный игрок:

В файле .h:

@interface Whatever : NSObject 
{ 
    XGPlayer *_activePlayer = nil; 
} 

@property (retain, nonatomic, readonly) XGPlayer *activePlayer; 

@end 

В .m файл:

// Private Methods 
@interface Whatever() 
- (void)setActivePlayer:(XGPlayer *)activePlayer 
@end 

@implementation Whatever 

@synthesize activePlayer = _activePlayer; 

// Private setter method 
- (void)setActivePlayer:(XGPlayer *)activePlayer 
{ 
    [activePlayer retain];  // If not using ARC 
    [_activePlayer release]; // If not using ARC 
    _activePlayer = activePlayer; 
} 

- (void) playerBuzzedIn: (XGPlayer *) activePlayer 
{ 
    self.activePlayer.isActive = NO; 
    activePlayer.isActive = YES; 
    self.activePlayer = activePlayer; 
    self.currentGameState = results; 
} 
Смежные вопросы