2013-03-09 2 views
-1

Im получаю ошибку incompatible integer to pointer conversion returning unsigned int from a function with result type NSUInteger *Получение несовместимого целое ошибки указателя

Я не уверен, что это значит, так как они являются своего рода такой же, нет ..? жаль им полностью новичок, вот мой код для моего PlayingCards палубы класса:

PlayingCards.h

#import "Card.h" 

@interface PlayingCards : Card 

@property (strong, nonatomic) NSString *suit; 
@property (nonatomic) NSUInteger rank; 

+(NSArray *) validSuit; 

+(NSUInteger *) maxRank; 


@end 

PlayingCards.m

#import "PlayingCards.h" 

@implementation PlayingCards 

@synthesize suit = _suit; 

//modifying the contents getter so it will return array with the ranks and rank+suit 
-(NSString *) contents { 

    NSArray *cardsRank = [PlayingCards rankStrings]; 

    return [cardsRank[self.rank] stringByAppendingString:self.suit]; 
} 

//creating a method to make sure we get validated suits 
+(NSArray *) validSuit { 

    return @[@"♠",@"♣",@"♥",@"♦"]; 
} 

//creating calss method to validate the rank 
+(NSArray *) rankStrings { 

    return @[@"?",@"A",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",@"J",@"Q",@"K"]; 
} 

//creating a new setter for suit to make sure we get the valitated suits, uding the validateSuit method 
-(void) setSuit:(NSString *)suit { 

    if ([[PlayingCards validSuit] containsObject:suit]) { 
     _suit = suit; 
    } 
} 

//creating new getter for suit to make sure its not empty 
-(NSString *) suit { 

    return _suit? _suit: @"?"; 
} 

//creating a class method to make sure when user set the rank he will will 
+(NSUInteger *) maxRank { 

    return [self rankStrings].count - 1; 

} 

//creating a new setter to the renk to make sure the rank is validates 
-(void) setRank:(NSUInteger)rank { 

    if (rank <= [PlayingCards maxRank]) { 

     _rank = rank; 
    } 
} 

@end 

, пожалуйста, помогите мне, чтобы понять это, его в линия (в файле .m):

+(NSUInteger *) maxRank { 

    return [self rankStrings].count - 1; 

} 

и осуществления на линии:

-(void) setRank:(NSUInteger)rank { 

    if (rank <= [PlayingCards maxRank]) { 

     _rank = rank; 
    } 
} 

С другой ошибки

order comparison between pointer and integer

спасибо!

+5

Избавьтесь от '*' в любом месте, где вы используете NSUInteger. 'NSUInteger' - это базовый тип, а не класс. – rmaddy

+0

спасибо, приятель! @rmaddy – JohnBigs

+0

Или, по крайней мере, malloc указатель на целое число. – CodaFi

ответ

1

Это обычно означает, что вы пытались случайно использовать указатель там, где вы не должны. Или не использовал указатель, где вы должны были. Ваш метод класса возвращает указатель на ваш NSUInteger. Удалите *

Смежные вопросы