2016-05-31 15 views
1

Ich erhalte JSON wie unten einzuwenden:Sortieren NSMutableArray nach

"Array1": 
[ 
    { 
    "abc": "3_name", 
    "id": 34, 
    "order": [3] 
    }, 
    { 
    "abc": "1_name", 
    "id": 50, 
    "order": [1] 
    }, 
    { 
    "abc": "2_name", 
    "id": 4, 
    "order": [2] 
    } 
] 

Ich weiß nicht, wie die Array1 sortieren nach „Ordnung“, die selbst ein Array ist. Bitte helfen Sie. Ich konnte nicht herausfinden, wie man es mit NSSortDescriptor oder irgendeiner anderen in Objective-C verfügbaren Methode sortiert.

+0

Aktualisieren Sie Ihre Frage mit Ihren Versuchen, dieses Array zu sortieren. – rmaddy

+0

@iOSDeveloper Hast du es mit meiner Antwort zur Arbeit gebracht? –

Antwort

1

you'de wollen einen Komparator sortieren verwenden, die so etwas wie aussehen würde: nach dem richtigen Namen des dict

id customCompare = ^(NSMutableDictionary * obj1, NSMutableDictionary * obj2) { 
    return [obj1[@"order"][0] compare:obj2[@"order"][0]]; 
}; 

NSArray *sortedArray = [jsonData[@"Array1"] sortedArrayUsingComparator:customCompare]; 

Wo jsonData sollte ersetzt werden, halten die Array1.

+0

Sie haben vergessen zu erwähnen, dass diese 'compare:' Methode für die Objekte in 'array1' existieren muss, nicht in der Klasse, die' sortedArrayUsingSelector: 'aufruft. Und dies berücksichtigt nicht, dass Sie ein Array von Wörterbüchern sortieren und die Sortierreihenfolge auf einem weiteren Array in diesen Wörterbüchern liegt. – rmaddy

+0

@maddy zur Übersichtlichkeit in lokalen Komparator geändert –

+0

Es ist immer noch völlig falsch. 'sortedArrayUsingSelector:' nimmt keinen Block als Argument. Und die Implementierung des Blocks spiegelt nicht die Daten wider, die sortiert werden. – rmaddy