我需要通过将一个Suit数组添加到一个Rank数组来附加String,就像这样。
-(NSString *)contents {
return [NSString stringWithFormat:@"%d %@", self.rank, self.suit];
}
正确的代码如下。我不懂代码。 NSString只返回1个字符串或String数组吗? 代码[PlayingCard validRanks]有什么作用? 为什么rankStr必须使用[self.rank]?为什么不能直接使用validRanks和validSuit?
-(NSString *)contents {
NSArray *rankStr = [PlayingCard validRanks];
return [rankStr [self.rank] stringByAppendingString: self.suit];
}
其余代码是:
#import "PlayingCard.h"
@implementation PlayingCard
-(NSString *)contents {
NSArray *rankStr = [PlayingCard validRanks];
return [rankStr [self.rank] stringByAppendingString: self.suit];
}
@synthesize suit = _suit;
-(void)setSuit: (NSString *)suits {
if ([[PlayingCard validSuits] containsObject:suits]) {
_suit = suits;
}
}
-(NSString *) suit {
return _suit ? _suit : @"?";
}
@synthesize rank = _rank;
-(void)setRank: (NSUInteger)ranks {
if (ranks <= [PlayingCard maxRank]) {
_rank = ranks; }
}
+(NSUInteger) maxRank {
return [self validRanks].count - 1;
}
+(NSArray *) validSuits {
return @[@"♥", @"♦", @"♠", @"♣"];
}
+(NSArray *) validRanks {
return @[@"?", @"A", @"2", @"3", @"4", @"5", @"6", @"7", @"8", @"9", @"10", @"J", @"Q", @"K"];
}
@end
谢谢。
答案 0 :(得分:0)
如果您刚刚写过[rankStr stringByAppendingString: self.suit]
,那意味着什么?好吧,rankStr
是NSArray。所以我们会在所有等级的数组上调用stringByAppendingString:
。这不仅无效,因为NSArray没有任何这样的方法,但它不会是我们想要的,即使它确实存在 - 我们希望得到代表此卡的等级的字符串,然后是卡的西装。所以我们用卡的等级 - rankStr[self.rank]
索引数组 - 它返回与rank
的{{1}}对应的数组中的元素。