Подсчет диапазона объектов в подмножестве NSSet

Я создал несколько NSSet с определенными координатами, например:

CoordRange     = [[NSSet alloc] initWithObjects:[NSNumber numberWithInt:-1],
                 [NSNumber numberWithInt:-3],[NSNumber numberWithInt:-7],
                 [NSNumber numberWithInt:-5],nil];

Я получу несколько координат в NSArray. Я создаю NSSet из массива (GRID), чтобы использовать функцию «isSubsetOfSet» NSSet. Возможно, что новый NSSet (GRID) может содержать значение вне CoordRange. Есть ли способ определить, содержит ли GRID по крайней мере четыре значения из CoordRange.

Итак, если GRID = [-1,-5,-7,-3,10], есть ли способ определить, являются ли по крайней мере четыре значения подмножеством CoordRange? isSubSetOfSet будет сравнивать только весь набор/диапазон.


person Kevin McFadden    schedule 06.01.2017    source источник


Ответы (1)


Это может быть не самое эффективное решение, но вы можете перебирать набор и проверять, находится ли каждый объект во втором наборе, пока у вас не будет 4 объекта.

NSSet *coordRange     = [[NSSet alloc] initWithObjects:[NSNumber numberWithInt:-1],
                  [NSNumber numberWithInt:-3],[NSNumber numberWithInt:-7],
                  [NSNumber numberWithInt:-5],nil];
NSSet *grid = [NSSet setWithArray:@[@-1,@-2,@-7,@-3,@10]];

__block NSInteger count = 0;

[grid enumerateObjectsUsingBlock:^(id  _Nonnull obj, BOOL * _Nonnull stop) {
    if ([coordRange containsObject:obj]) count++;
    if (count >= 4) *stop = YES;
}];

NSLog(@"count: %lu", count);
person Yan    schedule 06.01.2017