检查然后删除NSSet中的对象

时间:2012-05-28 14:32:11

标签: objective-c cocoa-touch nsset

我有NSSet,其中包含四个NSString个。如果我调用-containsObject:来查看NSSet是否包含某个字符串,是否可以删除NSSet中与我刚检查的字符串相等的条目?

如果我的问题没有意义,可能是因为使用NSSet可能是错误的方法来解决这个问题。

我有四个NSStrings,并希望将它们放入某种类别(Set,Array等)中。然后,我想检查另一个NSString是否与该组中的任何NSString匹配。如果组内的NSStringNSString之间存在匹配,我希望能够删除组内的NSString匹配。这可能吗?

5 个答案:

答案 0 :(得分:7)

假设您的设置为*mySet,您要删除的对象为objectToRemove。然后你可以这样做:

NSMutableSet *mutableSet = [NSMutableSet setWithSet:mySet];
[mutableSet removeObject:objectToRemove];
mySet = mutableSet;

答案 1 :(得分:1)

查看NSMutableSetremoveObject:方法。

答案 2 :(得分:1)

由于NSSets是不可变的,因此初始化后无法更改它们。使用NSMutableSet方法removeObject:删除对象

答案 3 :(得分:1)

这不是这个世界的事情,经常被程序员引用。但是,您需要NSMutableSet或NSMutableArray,而不是NSSet或NSArray。因为只有可变集合在创建后才能被更改。

使用.. [myArray removeObject:yourObject];

从NSMutableArray中删除任何对象

类似于NSMutableSet [mySet removeObject:yourObject];

答案 4 :(得分:1)

您可以在NSMutableArray上使用以下代码来删除第一次出现的对象。

[myArray removeObjectAtIndex:[myArray indexOfObject:myObject];