0
私は対戦カードのクラスを対戦カードにしようとしていますが、何らかの問題があります。列挙型に変換するのに苦労しています。enumを使用して客観的な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をコールしようとするが、それらのすべてがnullです:
は、ここに私のコードです。
私の列挙型は単純です:
typedef enum Suit
{
Clubs,
Hearts,
Diamonds,
Spades
} Suit;
とランクのための同様のもの。どんな助けも大歓迎です。
編集:現在、getContentsでconvertRankToStringまたはconvertSuitToStringに_rankまたは_suitを渡すことができないという警告が表示されます。
'_suit = &suit;'はあなたが望むものではありません。あなたはあなたのプロパティを 'Suit *'としてあなたの.hで宣言しましたか?あなたのメソッドにあるように 'Suit'と宣言され、' _suit = suit'で設定されるべきです。あなたのランクと同じこと – dan
私はスーツを宣言しました*。それが修正されるかどうか確認してみましょう – Jared
@dan:素晴らしいです。どうもありがとうございます。あなたがなぜ私はスーツではなくスーツ*を望んでいたのか説明できますか?私はObj Cのすべてがポインタベースであると思った。 – Jared