Как посчитать дубликаты значений в NSArray? - PullRequest
8 голосов
/ 27 июля 2011

Значение моего NSArray включает в себя дубликаты.Я нахожу дубликаты, но теперь, как я могу найти нет.они повторяются?

Ответы [ 3 ]

36 голосов
/ 27 июля 2011

Для этого вы можете использовать NSCountedSet.Добавьте все ваши объекты в подсчитанный набор, затем используйте метод countForObject:, чтобы узнать, как часто появляется каждый объект.

8 голосов
/ 06 января 2015

Пример:

NSArray *names = [NSArray arrayWithObjects:@"John", @"Jane", @"John", nil];
NSCountedSet *set = [[NSCountedSet alloc] initWithArray:names];

for (id item in set) {

    NSLog(@"Name=%@, Count=%lu", item, (unsigned long)[set countForObject:item]);
}
1 голос
/ 27 июля 2011

Вы можете попробовать что-то вроде этого

__block NSInteger elementCount = 0;
NSArray *array;

[<#NSArray yourArray#> indexesOfObjectsPassingTest:^(id obj, NSUInteger idx, BOOL *stop){
    if (obj == <#yourObject#>) {
        elementCount++;
        return YES;
    }
    return NO;
}];

Дайте мне знать, если это работает для вас

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...