0
我想在目標c中製作一張紙牌類,但遇到了一些麻煩。我在將枚舉轉換爲字符串時遇到了很多麻煩。使用枚舉在目標C中製作撲克牌?
這裏是我的代碼:
#import "Card.h"
@interface Card()
-(NSString *) convertRankToString:(Rank)rank;
-(NSString *)convertSuitToString:(Suit) suit;
@end
@implementation Card
-(id) initWithSuitAndRank:(Rank)rank suit:(Suit)suit {
self = [super init];
if (self) {
_suit = &suit;
_rank = &rank;
}
return self;
}
-(NSString *) getRank {
return [self convertRankToString: _rank];
}
-(NSString *) getSuit {
return [self convertSuitToString: _suit];
}
-(NSString *) getContents {
return [[self getRank] stringByAppendingString:[self getSuit]];
}
-(NSString *) convertRankToString:(Rank)rank {
switch (rank) {
case NONE:
return @"None";
break;
case ACE:
return @"A";
break;
case TWO:
return @"2";
break;
case THREE:
return @"3";
break;
case FOUR:
return @"4";
break;
case FIVE:
return @"5";
break;
case SIX:
return @"6";
break;
case SEVEN:
return @"7";
break;
case EIGHT:
return @"8";
break;
case NINE:
return @"9";
break;
case TEN:
return @"10";
break;
case JACK:
return @"J";
break;
case QUEEN:
return @"Q";
break;
case KING:
return @"K";
break;
default:
return @"";
}
}
-(NSString *)convertSuitToString:(Suit) suit {
switch (suit) {
case Clubs:
return @"♣︎";
break;
case Diamonds:
return @"♦︎";
break;
case Hearts:
return @"♥︎";
break;
case Spades:
return @"♠︎";
break;
default:
return @"";
break;
}
}
@end
然後我嘗試填補了甲板,並呼籲每個卡上getContents,但所有這些都爲空。
我的枚舉是簡單的:
typedef enum Suit
{
Clubs,
Hearts,
Diamonds,
Spades
} Suit;
,用一個類似的排名。任何幫助深表感謝。
編輯:我目前有警告說我不能通過_rank或_suit在getContents中轉換RankToString或convertSuitToString。
'_suit = &suit;'不是你想要的。你是否在你的.h中聲明你的屬性是'Suit *'?它應該像你在你的方法中一樣被聲明爲'Suit'並且用'_suit = suit'來設置。同樣的事情與你的'排名' – dan
是的,我宣佈西裝*。讓我看看是否可以修復它 – Jared
@dan:真棒。非常感謝。如果你不介意你能解釋爲什麼我想要西裝而不是西裝*?我認爲Obj C中的所有東西都是基於指針的 – Jared