2012-10-23 10 views
22

Nei dati di base se abbiamo una relazione a più valori, ad esempio quando un'azienda può avere più parole chiave, nel generatore NSManagedObject della sottoclasse, Apple utilizzerà NSOrderedSet anziché NSArray.Perché apple usa NSOrderedSet invece di NSArray per una relazione di valore mutli ordinata in CoreData?

Sono entrambi quasi uguali tranne che il controllo della proprietà è leggermente più veloce in NSOrderedSet.

Qualsiasi motivo per cui Apple non utilizza il NSArray molto più familiare e famoso?

risposta

61

La mia ipotesi è: Perché NSOrderedSet gestisce una collezione di distinte elementi, simile a NSSet per i rapporti non ordinati.

Con NSArray è possibile creare un oggetto che è correlato a un altro oggetto più di una volta.

+0

Ahh .... Devono essere distinti ..... Molto probabilmente questa è la risposta corretta. –

+1

Quindi dato questo, perché qualcuno dovrebbe usare NSArray ?? – PostCodeism

+10

@PostCodeism - Perché è possibile memorizzare una sequenza di elementi non distinti in cui la loro posizione relativa a vicenda è importante. IE, forse hai una serie di lettere che rappresentano una parola o una serie di note che rappresentano una canzone. Le lettere possono essere ripetute in una parola e le note possono essere ripetute in una canzone, quindi non dovrebbe ignorare gli elementi ripetuti, mentre riorganizzarli non ti darà la stessa parola o canzone, quindi deve anche tenere traccia dell'ordine. Se hai bisogno di elementi di ordine che potrebbero essere ripetizioni, hai bisogno di un NSArray. – ArtOfWarfare

13

Dal docs:

È possibile utilizzare insiemi ordinati in alternativa agli array quando l'ordine degli elementi è importante e prestazioni nei test se un oggetto è contenuto nel set è un test di adesione consideration- di un array è più lento del test per l'appartenenza a un set.

+0

Ho letto quei documenti. Il piccolo controllo dei membri sembra essere troppo banale per essere la causa dato che la maggior parte dei membri ha un conto basso. Penso che la risposta di Martin sia quella giusta. +1 ancora. –

Problemi correlati