我有一个名为PlayingCard的课程。我试图在名为PlayingCardDeck的类中使用它。
我在PlayingCardDeck.h中导入了PlayingCard.h
#import "PlayingCard.h"
@interface PlayingCardDeck : Deck
@end
当我尝试在PlayingCardDeck.m中调用类方法时,它不会显示为蓝色。 XCode确实在自动完成中看到了类,但在选中时它不是蓝色的。在这个例子中,我试图调用init方法。但是,我得到了错误预期表达式,好像它的XCode不知道PlayingCard类是什么。对card.rank =和card.suit =的调用错误也不起作用,因为我认为没有识别出PlayingCard。这没有意义,因为我已经定义了类并将其导入PlayCardDeck.h。有人可以提供一些见解吗?提前谢谢。
#import <Foundation/Foundation.h>
#import "Deck.h"
#import "PlayingCard.h"
@interface PlayingCardDeck : Deck
@end
#import "PlayingCardDeck.h"
@implementation PlayingCardDeck
-(id) init
{
self = [super init];
if (self) {
for(NSString *suit in [PlayingCard validSuits])
for(NSUInteger rank =1; rank <= 10; rank++)
PlayingCard *card = [[PlayingCard alloc] init];
card.rank = rank;
card.suit = suit;
}
}
@end
@interface PlayingCard : Card
@property (strong, nonatomic) NSString* suit;
@property (nonatomic) NSUInteger rank;
+(NSArray *) validSuits;
//+(NSUInteger) maxRank;
@end
答案 0 :(得分:5)
在for循环中缺少{
和}
会给您带来麻烦。
此代码
if (self) {
for(NSString *suit in [PlayingCard validSuits])
for(NSUInteger rank =1; rank <= 10; rank++)
PlayingCard *card = [[PlayingCard alloc] init];
card.rank = rank;
card.suit = suit;
}
实际上意味着这个
if (self) {
for(NSString *suit in [PlayingCard validSuits]) {
for(NSUInteger rank =1; rank <= 10; rank++) {
PlayingCard *card = [[PlayingCard alloc] init];
}
}
card.rank = rank;
card.suit = suit;
}
现在您可以清楚地看到卡片变量超出范围。
您应该添加{
和}
以明确定义for循环的范围,如下所示
if (self) {
for(NSString *suit in [PlayingCard validSuits]) {
for(NSUInteger rank =1; rank <= 10; rank++) {
PlayingCard *card = [[PlayingCard alloc] init];
card.rank = rank;
card.suit = suit;
}
}
}