比较一个数组objective-c中的两个UIButton.tag元素



我有一个名为"_orderOfCardPlacement"的数组,它在我的游戏每回合后都会将对象放入其中。这些对象是UIButtons,它们有许多细节,如setImage、setBounds、setCenter,最重要的是这个问题的setTag。setTag有两种可能的结果,即"1"或"2"。它们最初是用一个或另一个设置的,这可以通过另一个方法来更改,该方法每次调用。我需要做的是查看这个数组,看看"1"出现了多少次,"2"出现了几次,然后比较结果。因此,如果"1"出现9次,"2"出现7次,那么在这种情况下,"1"获胜。所以当我NSLog我的阵列(比如说一圈后)时,我得到了这个:

"<OBShapedButton: 0x7ff6f968e6a0; baseClass = UIButton; frame = (103 387.5; 150 135); opaque = NO; autoresize = RM+BM; userInteractionEnabled = NO; tag = 1; layer = <CALayer: 0x7ff6f968e8a0>>"

并且随后的回合将向阵列添加更多的按钮。但我需要知道,一旦这个数组满了,游戏完成了,如何访问对象的"tag="部分进行比较。感谢您的任何建议,如有必要,我将添加更多代码!

以下是完整的解决方案,如果有更优雅的方式来做我在这里做的事情,我绝对有兴趣知道!

//set the amount of cards each player has
_howManyCardsForComputer = 0;
_howManyCardsForPlayer = 0;
for (int i = 0; i < _orderOfCardPlacement.count; i++) {
    UIButton *auxButton = (UIButton *) [_orderOfCardPlacement objectAtIndex:i];
    NSInteger playerScore = auxButton.tag;
    NSMutableArray *totalScoreArray = [[NSMutableArray alloc] init];
    [totalScoreArray addObject:[NSNumber numberWithInteger:playerScore]];
    for (int j = 0; j < totalScoreArray.count; j++) {
        if ([[totalScoreArray objectAtIndex:j] isEqualToNumber:[NSNumber numberWithInteger:1]]) {
            _howManyCardsForPlayer++;
        }
        if ([[totalScoreArray objectAtIndex:j] isEqualToNumber:[NSNumber numberWithInteger:2]]) {
            _howManyCardsForComputer++;
        }
    }
}
_playerScore.text = [NSString stringWithFormat:@"Players cards %i", _howManyCardsForPlayer];
_playerScore.hidden = NO;
_computerScore.text = [NSString stringWithFormat:@"Computers cards %i", _howManyCardsForComputer];
_computerScore.hidden = NO;

我不确定我是否清楚地理解您想要实现的目标。如果按钮存储在NSMutableArray中,则可以通过获取第i个元素(在for循环内)来检查它们的标记,并应用强制转换。

NSMutableArray *arrayWithButtons = [[NSMutableArray alloc] init];
//... Fill the array
//Check tags
for(int i=0; i<numButtons; i++){
    UIButton *auxButton = (UIButton*) [arrayWithButton objectAtIndex:i];
    int auxTag = auxButton.tag;
    //... perform the proper operations
}

我希望我能很好地理解它,这能对你有所帮助。

最新更新