2013-06-18 36 views
0

我有一个名为PlayingCard的课。我正在尝试在名为PlayingCardDeck的课程中使用它。为什么Class不会在Xcode中显示为蓝色?

我已经进口PlayingCard.h在PlayingCardDeck.h

#import "PlayingCard.h" 

@interface PlayingCardDeck : Deck 

@end 

当我尝试调用PlayingCardDeck.m类方法它不会出现在蓝色。 XCode确实在自动完成中看到该类,但选中时不会显示蓝色。在这个例子中,我试图调用init方法。但是,我得到了预期的错误表达式,就好像它的XCode不知道PlayingCard类是什么一样。 Card.rank =和card.suit =调用的错误不起作用,因为我认为没有识别出游戏卡。这是没有意义的,因为我已经定义了该类并将其导入到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

哪个类方法是你'PlayingCardDeck'调用循环?你有'@综合'的属性?它在运行时崩溃,还是它给你编译器错误? – FeifanZ

回答

5

你缺乏那些循环{}给你添麻烦了。

此代码

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; 
} 

现在你可以清楚地看到,该卡变量超出范围。


您应该添加{}明确定义的范围像这样

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; 
     } 
    } 
} 
+0

这样做!感谢您的洞察力。 – user2497644

相关问题