2016-06-13 20 views
-2

Ich habe ein JSON wie folgt.So ordnen Sie geordnete NSDictionary mit JSONModel

odds: { 
0501: { 
x: 2.75, 
description: "a" 
}, 
0502: { 
x: 3.25, 
description: "b" 
}, 
0513: { 
x: 3.5, 
description: "c" 
}, 
0503: { 
x: 3.5, 
description: "d" 
}, 
0505: { 
x: 7.5, 
description: "e" 
}, 
0504: { 
x: 7.5, 
description: "f" 
}, 
0512: { 
x: 10, 
description: "g" 
} 
} 

Dieser Hash kommt von HTTP-Antwort, wie ich zeigen will, aber die Sache, die ich JSONModel verwenden es zur Karte und es ist nur so, dass NSDictionary abzubilden. Wenn Sie diesen JSON auf NSDictionary abbilden (wie Sie sich vorstellen können), entsteht eine ungeordnete Sequenz von Daten gemischt.

Also, wie diese JSON zu mappen, ohne seine Sequenz mit JSONModel und NSDictionary aufgebrochen?

+0

Was passiert, wenn Sie dieses JSON in NSDictionary konvertieren? –

+0

Sequenz ändert sich. – miletliyusuf

+2

Da es so etwas wie ein geordnetes 'NSDictionary' nicht gibt, und die Reihenfolge der Schlüssel in einem JSON-Wörterbuch irrelevant sind, warum sorgen Sie sich dann hier über die Reihenfolge? – rmaddy

Antwort

0

NSDictionary ist von Natur aus ungeordneten:

Are keys and values in an NSDictionary ordered?

Wenn Sie die Reihenfolge der Schlüssel-Wert-Einträge erhalten wollen, müssen Sie andere eine Datenstruktur verwenden, als NSDictionary. Jede Bibliothek, die Ihre Daten über eine NSDictionary übermittelt, kann die Reihenfolge nicht beibehalten.

+0

Ich wollte NSHashTable verwenden, aber JSONModel kann das Objekt damit nicht zuordnen. Ich brauche eine Datenstruktur wie Hashmap wie in Java – miletliyusuf

+0

HashMap in Java ist auch nicht bestellungswürdig. (LinkedHashMap ist jedoch.) Wenn JSONModel ein NSDictionary zurückgibt, ist der Auftrag bereits zerstört. Sie müssen eine andere Bibliothek verwenden, um die Bestellung zu erhalten. –

0

Etwas in dieser Situation habe ich getan, um die Wörterbuchschlüssel in einem separaten Array zusätzlich zum Wörterbuch zu sortieren. Verwenden Sie das geordnete Schlüsselarray, um festzulegen, wie die Wörterbuchwerte angezeigt werden.

+0

Ich kann die Wörterbuchschlüssel nicht sortieren, weil es keinen richtigen Weg gibt, dies zu tun. Es gibt x Werte in JSON und sie sollten sortiert werden. Wenn ich die Schlüssel in Odds sortiere, kann sich die Reihenfolge der x-Werte ändern. – miletliyusuf

+0

Wahrscheinlich müssen Sie dann Ihre Daten in ein anderes Format konvertieren. Iteriere durch die Werte und konvertiere den JSON in ein Objekt mit dem x-Wert und der Beschreibung, lege diesen dann in ein Array und sortiere nach dem x-Wert. – Wyatt

0

Wörterbücher können nicht sortiert werden, aber da Ihr JSON ein Array von Objekten zu sein scheint, durchlaufen Sie das resultierende NSDictionary mit for ... in und fügen Sie die Elemente zu einem veränderbaren Array hinzu.

Anschließend sortieren Sie das resultierende Array mit .sortInPlace, indem Sie den x-Wert vergleichen.

Verwandte Themen