如何在NSMutableSet中禁用 - allObjects的排序?

时间:2014-08-04 21:41:12

标签: macos cocoa sorting nsmutableset

在我的OSX应用程序中,我有包含自定义对象的NSMutableSet。我在自定义对象类中实现了-isEqual和-hash方法,以便集合可以按照我想要的方式进行比较。

但是,每当我将一个新对象插入到我的set中然后调用-allObjects时,返回的数组都会按排序顺序排列对象。

顺序取决于我在上面提到的-isEqual方法中用于比较自定义对象的属性值。

在我的情况下,我想保留对象添加到集合的顺序。

有没有人知道如何实现这一目标?

非常感谢任何形式的帮助!

2 个答案:

答案 0 :(得分:3)

设置没有订单,它们专门设计为无序集合。当您致电allObjects获取数组时,您获得的顺序未定义,因此您不应该依赖它。

如果你想继续使用套装,你有2个基本选项。

  1. 获得数组后手动订购数组。

  2. 使用维持订单的NSOrderedSet

答案 1 :(得分:0)

  

在我的情况下,我想保留对象添加到集合的顺序。

然后不要使用一套,而是NSArray 数组按顺序存储它们的对象,不设置它们。