在Cocoa的集合类中是否有与Smalltalk的#copyWithout相同的东西?

时间:2014-08-11 16:55:15

标签: objective-c cocoa nsset

在Smalltalk中,我习惯于制作一个没有像这样不需要的元素的集合的副本:

myCollection copyWithout: undesiredObject

回答不包含任何等于undesiredObject的元素的接收者副本。

Cocoa中有相同的东西吗? 如果没有,获得此类副本的最佳方式是什么? 我特别感兴趣的是复制NSSet的实例。

2 个答案:

答案 0 :(得分:1)

Cocoa Foundation课程中没有直接的等效词。

可能的方法#1:

NSSet *withoutUndesiredObject = [myCollection objectsPassingTest:^BOOL(id obj, BOOL *stop) {
    return ![obj isEqualTo:undesiredObject];
}];

可能的方法#2:

NSMutableSet *withoutUndesiredObject = [myCollection mutableCopy];
[withoutUndesiredObject removeObject:undesiredObject];

其他集合类NSArray也存在类似的方法 和NSDictionary

答案 1 :(得分:0)

我看看NSIndexSet,它会给你更多的灵活性。