Ho un elenco di stringhe in un NSMutableArray
e desidero ordinarle in ordine alfabetico prima di visualizzarle nella visualizzazione tabella.Come posso ordinare le stringhe in NSMutableArray in ordine alfabetico?
Come posso farlo?
Ho un elenco di stringhe in un NSMutableArray
e desidero ordinarle in ordine alfabetico prima di visualizzarle nella visualizzazione tabella.Come posso ordinare le stringhe in NSMutableArray in ordine alfabetico?
Come posso farlo?
C'è esempio funzionante il seguente di Apple, utilizzando sortedArrayUsingSelector:
e localizedCaseInsensitiveCompare:
nel Collections Documentation:
sortedArray = [anArray sortedArrayUsingSelector:
@selector(localizedCaseInsensitiveCompare:)];
Si noti che questo restituirà un nuovo array ordinato. Se si desidera ordinare il vostro NSMutableArray
a posto, quindi utilizzare sortUsingSelector:
invece, in questo modo:
[mutableArray sortUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
Ecco una risposta aggiornata per Swift:
ordinamento può essere fatto in Swift con l'aiuto di chiusure. Ci sono due metodi - sort
e sorted
che facilitano questo.
var unsortedArray = [ "H", "ello", "Wo", "rl", "d"]
var sortedArray = unsortedArray.sorted { $0.localizedCaseInsensitiveCompare($1) == NSComparisonResult.OrderedAscending }
Nota: Qui sorted
restituirà un array ordinato. Lo stesso unsortedArray
non verrà ordinato.
Se si desidera ordinare unsortedArray
sé, utilizzare questo
unsortedArray.sort { $0.localizedCaseInsensitiveCompare($1) == NSComparisonResult.OrderedAscending }
Here è la documentazione per i metodi di ordinamento di Swift.
Docs per i diversi metodi di confronto String
here.
opzionale:
Invece di usare localizedCaseInsensitiveCompare
, questo potrebbe anche essere fatto:
stringArray.sort{ $0.lowercaseString < $1.lowercaseString }
o anche
stringArray.sort{ $0 < $1 }
i f si vuole un confronto sensibile caso
Per me questo ha funzionato ....
areas = [areas sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
Qui aree è NSArray
. Spero che aiuti qualcuno.
È facile ottenere l'ordine crescente.Seguire i passaggi a soffietto ,,,
Modello 1:
NSSortDescriptor *sortDesc = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
sortedArray=[yourArray sortedArrayUsingDescriptors:@[sortDesc]];
se si desidera che l'ordinamento di essere case insensitive, si avrebbe bisogno di impostare il descrittore come questo ,,
Modello 2:
NSSortDescriptor * sortDesc = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES selector:@selector(caseInsensitiveCompare:)];
sortedArray=[yourArray sortedArrayUsingDescriptors:@[sortDesc]];
Grazie, '.lowercaseString' ha funzionato per me quando ho confrontato gli oggetti con un titolo. 'mediaItems = mediaItems.sorted {$ 0.media.title.lowercaseString> $ 1.media.title.lowercaseString}' –