Domanda

Intendo:L'ordine delle chiavi e dei valori in un NSDictionary è sempre lo stesso di come sono stati specificati durante l'inizializzazione di NSDictionary?Oppure dovrei mantenere un NSArray separato se ho davvero bisogno di conoscere l'ordine delle chiavi?

È stato utile?

Soluzione

No, non sono ordinati. Finché non si aggiungere o rimuovere elementi dal dizionario, rimarranno nello stesso ordine, ma non appena si aggiungono o rimuovono un elemento, il nuovo ordine sarà completamente diversa.

Se avete bisogno di chiavi / valori da ordinare, utilizzare un NSArray (o qualche altro ordinato dati struttura), invece.

Altri suggerimenti

chiavi e valori NSDictionary non sono ordinati. Le opzioni:

  • Mantenere un array separato delle chiavi nell'ordine desiderato
  • Scrivi o trovare una classe esistente che è un wrapper per quanto sopra
  • Scrivi o trovare una sottoclasse esistente di NSDictionary che aggiunge API per ordinare
:

Matt Gallagher ha postato sul blog dal titolo “OrderedDictionary: sottoclasse un cluster di classe di cacao” che copre esattamente il problema, completo di codice di esempio.

NSDictionary, secondo di riferimento di Apple , è fondamentalmente un wrapper una tabella hash. Quindi no, non sono garantiti per essere in alcun ordine particolare.

Non è mai garantito che le chiavi siano nello stesso ordine quando si accede a un NSDictionary.Se le chiavi possono essere confrontate (cosa che presumo possano ricevere la tua domanda), puoi sempre ordinarle se devi accedervi in ​​ordine ordinato.

Dovresti farlo leggendo prima le chiavi in ​​un array e ovviamente ordinando l'array.

In realtà, non si può nemmeno contare su l'ordine che è lo stesso quando si esegue il programma in due diversi dispositivi, anche se è lo stesso programma e la stessa identica versione del sistema operativo.

Ad esempio, se si esegue il programma su un Air iPad, l'ordinamento degli elementi all'interno NSDictionary può essere diverso rispetto a quando si esegue lo stesso programma su un Retina iPad, anche se la versione iOS è esattamente la stessa.

In breve, l'ordine degli elementi in NSDictionary non deve mai essere invocato. Si deve sempre assumere essi possono essere in qualsiasi ordine non specificato, che possono essere diverse su dispositivi diversi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top