Ich versuche eine Spielklasse in Ziel c zu machen, habe aber einige Probleme. Ich habe große Schwierigkeiten, die Enums in Strings zu konvertieren.Erstellen einer Spielkarte in Ziel C mit Enums?
Hier ist mein Code:
#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
Dann versuche ich ein Deck zu füllen und rufen getContents auf jeder Karte, aber alle von ihnen sind null.
Meine Aufzählungen sind einfach:
typedef enum Suit
{
Clubs,
Hearts,
Diamonds,
Spades
} Suit;
Und ein ähnliches für Rang. Jede Hilfe wird sehr geschätzt.
edit: Ich habe derzeit Warnungen sagen, dass ich in _RankToString oder ConvertSuitToString in GetContents in _Rank oder _Suit nicht übergeben kann.
'_suit = &suit;' ist nicht das, was Sie wollen. Haben Sie Ihre Eigenschaften als "Suit *" in Ihrer .h deklariert? Es sollte nur als "Suit" deklariert werden, wie Sie es in Ihren Methoden haben, und mit "_suit = suit" eingestellt werden. Das gleiche gilt für deinen 'Rang' – dan
Ja, ich habe Suit * erklärt. Lassen Sie mich sehen, ob das es behebt – Jared
@dan: genial funktioniert es. ich danke dir sehr. Wenn es dir nichts ausmacht, kannst du erklären, warum ich Anzug und nicht Anzug * wollte? Ich dachte, alles in Obj C war pointerbasiert. – Jared