【问题标题】:Undeclared identifier error in fast enumeration loop快速枚举循环中未声明的标识符错误
【发布时间】:2013-07-18 19:45:45
【问题描述】:

我一直在尝试为一副纸牌编写应用程序,但我的代码中不断出现错误。错误出现在otherCard 上并说

未声明的标识符 otherCard。

#define MATCH_BONUS 4
#define MISMATCH_PENALTY 2
#define FLIP_COST 1

- (void)flipCardAtIndex:(NSUInteger)index
{
    card *card = [self cardAtIndex:index];

    if (!card.isUnplayable){
        if(!card.isFaceUp){
            for (card *otherCard in self.cards) {
                if (otherCard.isFaceUp && !otherCard.isUnplayable) {
                    int matchscore = [card match: @[otherCard]];
                    if (matchscore) {
                        otherCard.unplayable = YES;
                        card.unplayable = YES;
                        self.score += matchscore * MATCH_BONUS;
                    } else {
                        otherCard.faceUp = NO;
                        self.score -= MISMATCH_PENALTY;
                    }
                    break;
                }
            }
            self.score -= FLIP_COST;
        }
        card.faceUp = !card.isFaceUp;
    }
}

【问题讨论】:

  • 它是否告诉你错误在哪一行?
  • 将您的 card 类更改为 Card。你在本地屏蔽它,所以 for each 循环失败了。

标签: objective-c compiler-errors identifier


【解决方案1】:

您的 card 类被 card 变量所掩盖。

card *card = [self cardAtIndex:index];

这意味着 for each 循环在这里失败:

for (card *otherCard in self.cards) {

尝试将您的 card 类更改为 Card 并使用大写 C(大写类名也是一种不错的风格)。或者,您可以将 card 变量重命名为 flipCard 之类的其他名称。

【讨论】:

    猜你喜欢
    • 2021-11-14
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    • 2013-03-12
    • 2012-09-15
    • 1970-01-01
    • 2013-01-22
    • 2011-10-25
    相关资源
    最近更新 更多