0

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

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

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

就我而言,我想保留将对象添加到集合中的顺序。

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

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

4

2 回答 2

3

集合没有顺序,它们专门设计为无序集合。当你调用allObjects获取一个数组时,你得到的顺序是没有定义的,所以你不应该依赖它。

如果您想继续使用集合,这里有 2 个基本选项。

  1. 获得阵列后手动订购阵列。

  2. 使用NSOrderedSet维持秩序的。

于 2014-08-04T21:43:48.940 回答
0

就我而言,我想保留将对象添加到集合中的顺序。

然后不要使用集合,而是使用NSArray.
数组按顺序存储它们的对象,集合没有。

于 2014-08-04T21:43:30.747 回答