2016-07-29 17 views
0

Ich baue eine iOS App. Ich muss ein NSMutableArray sortieren, also habe ich NSSortDescriptor verwendet. Wenn ich jedoch meine App starte, bekomme ich leider Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<NSTaggedPointerString 0xa000000343730314> valueForUndefinedKey:]: this class is not key value coding-compliant for the key ID.'.NSMutableArray mit NSSortDescriptor sortieren

Dies ist der Code Ich verwende:

customerArray = [[NSMutableArray alloc] initWithArray:[rootDict allKeys]]; 
NSSortDescriptor *numberSorter = [NSSortDescriptor sortDescriptorWithKey:@"ID" ascending:YES selector:@selector(localizedStandardCompare:)]; 

[customerArray sortUsingDescriptors:@[numberSorter]]; 

Früher, als ich customerArray = [[NSMutableArray alloc] initWithArray:[rootDict allKeys]]; nur benutzte, hatte ich keine Probleme. Nachdem ich die beiden anderen Zeilen hinzugefügt hatte, bekam ich Probleme. Ich habe überprüft, wo es mit Breakpoints abstürzt und festgestellt, dass es abstürzt, nachdem ich versucht habe, die letzte Zeile auszuführen ([customerArray sortUsingDescriptors:@[numberSorter]];).

Jede Hilfe wäre willkommen, und ich werde gerne mehr Code bei Bedarf hinzufügen.

+2

Sind die Elemente in 'customerArray'-Strings? Wenn ja, dann erhalten Sie den Fehler, weil Sie die Eigenschaft 'ID' dieser Elemente vergleichen, die nicht existiert. Entferne den Deskriptor und benutze '[customerArray sortUsingSelector: @selector (localizedStandardCompare :)]', um die Elemente direkt zu vergleichen – Doc

+0

@Doc Du hast recht, es waren Strings, aber ich habe es völlig vergessen und dachte, dass es das ursprüngliche Array von Wörterbüchern ist früher erstellt. Danke, das hat funktioniert. Wenn Sie das als Antwort angeben, werde ich es akzeptieren. – JustMe

Antwort

0

Wie Ihr Fehler valueForUndefinedKey angibt, was bedeutet, dass die Objekte innerhalb der NSMutableArray, d. H. CustomerArray in Ihrem Fall keinen Schlüssel mit der Namen-ID (Undefined Key) hat.

Sie müssen die Objekte in Ihrem NSMutableArray überprüfen.

Hoffe das löst Ihr Problem.