Frage

Gibt es eine einfache Möglichkeit, ein NSMutablearray von NSMutablearrays mit NSStrings zu sortieren?

Ich bin sicher, dass es eine einfache Methode dafür geben muss, aber ich kann es nicht finden.

Um zu verdeutlichen, möchte ich das erste Array alphabetisch nach dem NSString am Index 3 des Sub -Arrays sortieren.

War es hilfreich?

Lösung

Ich habe niemanden tatsächlich mit anderen als "Verwenden Sie diese Funktion verwenden, sie herausfinden" gesehen. Hier finden Sie einen tatsächlichen Code, den Sie verwenden können.

Setzen Sie diese Kategorie am Ende Ihrer .h -Datei (oder überall und importieren Sie die .H, wo immer Sie sortieren müssen)

@interface NSString (SortCompare)

-(NSInteger)stringCompare:(NSString *)str2;

@end

Fügen Sie dies in die .m -Datei (oder die .m der .h Sie importieren).

@implementation NSString (SortCompare)

-(NSInteger) stringCompare:(NSString *)str2
{
    return [(NSString *)self localizedCaseInsensitiveCompare:str2];
}

@end

Verwenden Sie nun die Sortier
Nsmutablearray:

[myArray sortUsingSelector:@selector(stringCompare:)];

Nsarray:

[myArray sortedArrayUsingSelector:@selector(stringCompare:)];

Andere Tipps

Wenn dein NSMutableArray Enthält nur Objekte vom Typ NSString, einfach tun:

[myMutableArray sortUsingSelector:@selector(compare:)];

Wie andere erwähnt haben, hat Nsarray keine compare: Selektor, mit dem es sich sortieren kann, sodass Sie es selbst definieren müssen. Ich würde eine Kategorie auf NSArray mit einer Methode namens erstellen compare:(NSArray *)otherArray (oder etwas, das besser beschreibt, was es tut) und verwenden das mit sortUsingSelector:.

Abhängig von Ihren Bedürfnissen könnten Sie möglicherweise alle Ihre Saiten in ein großes Array stopfen, wenn Sie sie sortieren müssen, und dies stattdessen verwenden. Es könnte etwas weniger Code sein, um zu schreiben.

Sie können nach Schlüssel sortieren mit:

NSSortDescriptor *aSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"key" ascending:NO];
[yourArray sortUsingDescriptors:[NSArray arrayWithObject:aSortDescriptor]];
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top