0

我似乎找不到一个合适的例子来说明如何将“indexPassingTest”与 NSIndexSet 一起使用。我正在尝试与 NSIndexSets 进行比较,以找出差异。我希望使用以下代码:

NSIndexSet *selectionIndexesNew = [change objectForKey:@"new"];
NSIndexSet *selectionIndexesOld = [change objectForKey:@"old"];
NSUInteger newSelection = 0;
newSelection = [selectionIndexesNew indexPassingTest:^BOOL(NSUInteger idx, BOOL *stop) {
    *stop = NO;
    if ([selectionIndexesOld containsIndex:idx] == NO) {
        *stop = YES;
    }
    return idx;
}];

这似乎根本没有遍历我的 NSIndexSet。使用 selectionIndexesNew 中的第一个值,但忽略后续值。我对这个方法的理解是,所有的Index值都是迭代的。还是我在这方面错了?

4

1 回答 1

0

NO好的,想通了,就在发布这个之后..如果您的 idx 不匹配,您必须返回。YES如果索引匹配则通过。

这是似乎有效的代码。(这还没有经过广泛的测试..)

NSIndexSet *selectionIndexesNew = [change objectForKey:@"new"];
NSIndexSet *selectionIndexesOld = [change objectForKey:@"old"];
NSUInteger newSelection = 0;
newSelection = [selectionIndexesNew indexPassingTest:^BOOL(NSUInteger idx, BOOL *stop) {
    if ([selectionIndexesOld containsIndex:idx] == NO) {
        *stop = YES;
        return YES;
    }
    return NO;
}];
于 2016-11-18T18:25:46.647 回答