我想用给定数量的零来初始化NSArray。我需要它来创建一个计数器数组,并在函数的末尾返回一个具有最高值的计数器索引。
所以问题是如何初始化给定长度的零的NSArray?在1-2行中有一个很好的方法吗?也许有更好的方法来计算对象?你会怎么做?
谢谢!
UPD:这是我现有功能的代码。它返回具有相同等级的最大卡数。
+ (int)ranksMatched:(NSArray *)cards
{
NSMutableArray *ranksCounter = [[NSMutableArray alloc] initWithCapacity:[PlayingCard maxRank]];
for (int i = 0; i < [PlayingCard maxRank]; ++i) {
[ranksCounter addObject:[NSNumber numberWithInt:0]];
}
int maxIndex = 0;
int maxCount = 0;
for (PlayingCard *card in cards) {
int currentCount = [ranksCounter[card.rank] intValue] + 1;
if (maxCount < currentCount) {
maxCount = currentCount;
maxIndex = card.rank;
}
}
return maxCount;
}
答案 0 :(得分:1)
我猜你想要按照排名对该组进行排名并返回最大组的排名:
+ (int)ranksMatched:(NSArray *)cards
{
NSCountedSet *ranks = [NSCountedSet setWithArray:[cards valueForKeyPath:@"rank"]];
NSNumber *maxRank = nil;
NSUInteger maxCount = 0;
for (NSNumber *rank in ranks) {
NSUInteger rankCount = [ranks countForObject:rank];
if (rankCount > maxCount) {
maxRank = rank;
maxCount = rankCount;
}
}
return [maxRank intValue];
}
假设你有
@interface PlayingCard : NSObject
@property (nonatomic, assign) int rank;
…
@end
cards
是PlayingCard
的数组。