2011-09-09 15 views
6

私は、次のコードを持っている:"NSSet allObjects"はランダムな順序付けをしていますか?

self.temporaryImageArray = [(NSSet *)[[array objectAtIndex:0] images] allObjects] 

アレイは、私のCoreDataモデルからBandオブジェクトを保持しています。 「画像」と呼ばれるプロパティーとしてNSSetがあります。

ここでは、temporaryImageArrayを使用して、画像を更新する必要があるかどうかをタイムスタンプで確認します。私はいくつかの非常にランダムな振る舞いに出くわしました。私の質問は今です:

[NSSet allObjects]はセットから無作為にランダムにオブジェクトを返しますか?

これを防止する方法はありますか、それを順番に返す方法はありますか?私のコードの複雑さを大幅に軽減します。

答えて

3

セットには注文がありません。しかし、10.7(ライオン)では、NSOrderedSetクラスがあります。これはiOS 4.0では利用できません。

+0

:-(ありがとうとにかく.. – Octoshape

10

NSSetは、順不同のコレクションです。オブジェクトの「順序」が何であるかは分かりません。したがって、-allObjectsに電話すると、順序付けられていないものが返されます。

なお-allObjects状態のドキュメント:

セットにメンバーがいない場合セットのメンバー、または空の配列を含む配列。 配列内のオブジェクトの順序は定義されていません。

(強調鉱山)

3

NSOrderedSetとNSMutableOrderedSetはあなたが最新の状態に保たいるだけので、iOSの5で使用できるようになりました。

ここにはlink

関連する問題