2011-09-09 17 views
6

Tengo el siguiente código:"NSSet allObjects" ¿ordena al azar?

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

matriz contiene un objeto Band de mi modelo CoreData. Tiene un NSSet como una propiedad llamada "imágenes".

Ahora uso este temporaryImageArray para determinar a través de las marcas de tiempo si las imágenes necesitan ser actualizadas o no. Me he encontrado con un comportamiento muy aleatorio y mi pregunta ahora es:

¿[NSSet allObjects] devuelve los Objetos del Conjunto al azar sin ningún orden?

¿Hay alguna manera de evitar esto o hacer que lo devuelva en orden? Disminuiría mucho la complejidad de mi código.

Respuesta

3

Un conjunto no tiene orden. Sin embargo, en 10.7 (León), hay una clase NSOrderedSet. Esto no está disponible en iOS 4.0.

+0

:-(thanks anyways .. – Octoshape

10

NSSet es una colección desordenada. No tiene idea de cuál es el "orden" de sus objetos. Por lo tanto, cuando llama al -allObjects, los devuelve desordenados.

Tenga en cuenta que la documentación sobre -allObjects estados:

Una matriz que contiene los miembros del conjunto, o una matriz vacía si el conjunto no tiene miembros. El orden de los objetos en la matriz no está definido.

(el énfasis es mío)

3

NSOrderedSet y NSMutableOrderedSet están ahora disponibles en iOS 5 sólo para que estés mantenga al día.

Aquí está el link