NSSet的问题(删除对象和迭代)

时间:2010-06-04 10:28:13

标签: objective-c core-data nsset

我目前正在开发一个使用CoreData的项目,关系正在使用NSSet。我目前有两个问题:

  1. 如何使用索引迭代NSSet? - >解决

  2. 如何删除特定对象? =>我想我需要迭代并检查对象?

  3. 嗯,好像我在添加对象时也遇到了问题?这有什么不对:

        [mySet setByAddingObject:info];
    

    感谢您的帮助。

    MCB

1 个答案:

答案 0 :(得分:10)

集合是无序容器,这意味着您无法使用索引对其进行迭代。您可以使用[set allObjects]来获取数组,但请记住,每次执行代码时,顺序都不一致。因此,您可能希望在迭代之前对该数组进行排序,具体取决于您正在执行的操作。

要删除对象,您必须拥有NSMutableSet的实例并使用removeObject:消息。如果你只有一个NSSet并希望创建一个删除了某个项目的新集合,你可以使用这样的代码:

NSSet *mySet = /* ... */;
NSMutableSet *mutable = [NSMutableSet setWithSet:mySet];
[mutable removeObject:myObject];