【问题标题】:How to disable sorting for - allObjects in NSMutableSet?如何禁用排序 - NSMutableSet 中的所有对象?
【发布时间】:2014-09-27 11:30:48
【问题描述】:

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

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

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

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

有人知道如何实现吗?

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

【问题讨论】:

    标签: macos cocoa sorting nsmutableset


    【解决方案1】:

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

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

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

    2. 使用NSOrderedSet 维护秩序。

    【讨论】:

      【解决方案2】:

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

      那么不要使用集合,而是使用NSArray
      数组按顺序存储对象,集合没有。

      【讨论】:

      • 这是一个很好的评论,但我想你理解集合和数组之间的区别,我因此使用集合!
      • 那你的问题对我来说没有意义。
      • 如果您使用的是一套,那么您就不会关心订单。如果这样做,请使用数组。
      猜你喜欢
      • 1970-01-01
      • 2012-01-26
      • 2016-12-23
      • 1970-01-01
      • 1970-01-01
      • 2018-11-23
      • 2018-07-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多