"NSSet allObjects" делает случайный порядок? - PullRequest
6 голосов
/ 10 сентября 2011

У меня есть следующий код:

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

Массив содержит Band объект из моей модели CoreData. Он имеет NSSet как свойство, называемое «images».

Теперь я использую это temporaryImageArray, чтобы определить по временным меткам, нужно ли обновлять изображения. Я столкнулся с очень случайным поведением, и теперь мой вопрос:

[NSSet allObjects] Возвращает ли объекты из набора в произвольном порядке в произвольном порядке?

Есть ли способ предотвратить это или заставить его вернуть его в порядок? Это значительно уменьшило бы сложность моего кода.

Ответы [ 3 ]

11 голосов
/ 10 сентября 2011

NSSet - неупорядоченная коллекция. Он понятия не имеет, каков «порядок» его объектов. Поэтому, когда вы звоните -allObjects, он возвращает их неупорядоченными.

Обратите внимание, что документация по -allObjects гласит:

Массив, содержащий членов набора, или пустой массив, если в наборе нет членов. Порядок объектов в массиве не определен.

(акцент мой)

4 голосов
/ 10 сентября 2011

Набор не имеет порядка. Однако в 10.7 (Lion) есть класс NSOrderedSet . Это не доступно в iOS 4.0.

3 голосов
/ 12 января 2012

NSOrderedSet и NSMutableOrderedSet теперь доступны в iOS 5, поэтому вы всегда в курсе.

Вот ссылка

...