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 に答える