创建重复数字的NSArray

时间:2013-09-09 23:54:57

标签: objective-c arrays

我想用给定数量的零来初始化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;
}

1 个答案:

答案 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

cardsPlayingCard的数组。