2016-04-11 16 views
0

Ich habe ein Array von benutzerdefinierten Objekten, die ich vom Server bekomme.NSSortDescriptor Sortieren von Daten im Zufallsformat

Ich möchte Daten basierend auf Kosten sortieren. Ihr ist ein totalCost Feld in meinem Array, das vom Typ NSString ist.

Jetzt bin ich mit NSSortDescriptor wie folgt aus:

NSSortDescriptor *sortDescriptrCost; 
     sortDescriptrCost = [[NSSortDescriptor alloc] initWithKey:@"totalCost" 
                 ascending:YES]; 

    NSArray *sortDescriptors = [NSArray arrayWithObjects:sortDescriptrCost,nil]; 
     NSArray *sortedArray = [unchnagedOriginalData sortedArrayUsingDescriptors:sortDescriptors]; 

Nun, wenn die Kosten mehr als 100 dann ist es gut zu sortieren. Aber wenn die Daten enthält costless than 100 die Sortier breaks.Here ist die Ausgabe:

Dies ist die sortierter Reihenfolge erhalte ich:

113--totalCost 
113--totalCost 
120--totalCost 
149--totalCost 
182--totalCost 
255--totalCost 
259--totalCost 
263--totalCost 
263--totalCost 
67--totalCost 
80--totalCost 
+2

da es eine Zeichenkette, wird nach Ascii-Wert statt nach Zahlenwert sortiert. – hola

+2

Sortieren Sie keine Zeichenfolgen, als wären sie Zahlen. "8"> "6"> "1", deshalb sortiert 67 nach den anderen und 80 danach. – Avi

+2

Ihr Gesamtkosten scheint wie eine Schnur .. so versuchen Sie es aus. Ändern Sie Ihren Schlüssel Wert zu "totalCost.intValue" oder "totalCost.integerValue" –

Antwort

1
NSArray *sortedArray; 
sortedArray = [unsortedArray sortedArrayUsingComparator:^NSComparisonResult(id a, id b) { 
    if ([a valueForKey:@"totalCost"] && [b valueForKey:@"totalCost"])  { 
     // Compare object values and return as per your expectations 
    } 
}]; 

Dies kann Ihnen helfen, sicher

Verwandte Themen