我创建了几个具有特定坐标的NSSet:
CoordRange = [[NSSet alloc] initWithObjects:[NSNumber numberWithInt:-1],
[NSNumber numberWithInt:-3],[NSNumber numberWithInt:-7],
[NSNumber numberWithInt:-5],nil];
我会在NSArray中收到几个坐标。我从数组(GRID)创建一个NSSet来使用NSSet的“isSubsetOfSet”函数。新的NSSet(GRID)可能包含CoordRange之外的值。有没有办法让我确定GRID是否包含来自CoordRange的至少四个值。
因此,如果GRID = [-1,-5,-7,-3,10],我有办法确定至少有四个值是否是CoordRange的子集? isSubSetOfSet只会比较整个集合/范围。
答案 0 :(得分:1)
这可能不是最有效的解决方案,但您可以遍历Set并检查每个对象是否在第二组中,直到您有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);