2014-12-08 19 views
19

Come posso ordinare i risultati del mio reame utilizzando più proprietà?Ordina per più proprietà utilizzando il dominio

li sto ordinamento prima utilizzando uno proprietà come questa:

allShows = Show.allObjects().sortedResultsUsingProperty("dateStart", ascending: true) 

Ma ora voglio anche fare una sorta secondario da un'altra proprietà "timeStart". Ho provato in questo modo:

allShows = Show.allObjects().sortedResultsUsingProperty("dateStart", ascending: true).sortedResultsUsingProperty("timeStart", ascending: true) 

Ciò renderà i risultati ordinati solo dalla seconda proprietà. Per favore aiuto.

risposta

15

capito in questo modo:

let sortProperties = [RLMSortDescriptor(property: "dateStart", ascending: true), RLMSortDescriptor(property: "timeStart", ascending: true)] 
allShowsByDate = Show.allObjects().sortedResultsUsingDescriptors(sortProperties) 
+0

che ha aiutato molto, grazie – OthmanT

+1

Sembra che riscritta RLMSortDescriptor a SortDescriptor –

+0

alcuna idea di come implementare questo in RealmSwift? – raw3d

27

In RealmSwift possiamo scrivere più proprietà in questo modo:

let sortProperties = [SortDescriptor(property: "dateStart", ascending: true), SortDescriptor(property: "timeStart", ascending: true)] 
allShowsByDate = Realm().objects(MyObjectType).sorted(sortProperties) 

Se si desidera utilizzare più proprietà, è possibile aggiungere i valori del SortDescriptor() al array.

+0

Come posso fare più ordinamenti con la funzione personalizzata? – TomSawyer

+0

@TomSawyer È possibile utilizzare questo metodo sort ({(primo, secondo) -> Bool in se first.startDate.compare (second.startDate) == .Ascending {return true } else {return false } }) –

+0

@AIG Se esiste una proprietà di tipo opzionale nidificata, come la ordineremo. –

1

ho trovato una soluzione.

var dataSource: Results<DLVCasting>! = nil 
let realm = try! Realm() 
let sortDescriptors = [SortDescriptor(property: "someValue", ascending: false)] 
dataSource = realm.objects(MyClass.self).sorted(sortDescriptors); 
dataSource = dataSource.sorted("anotherValue", ascending: false) 

Ma se si mette più di un Descripton sorta in ordine, come nell'esempio qui sotto

let sortDescriptors = [SortDescriptor(property: "someValue", ascending: false),SortDescriptor(property: "someValue", ascending: false)] 

questo non funzionerà. Io davvero non capisco perché.

+0

Se metto più di una descrizione di ordinamento, questo non funzionerà anche. Io davvero non capisco perché anche –

1

Questo è come farlo a partire dal regno 2,5

 dataArray = try! Realm().objects(Book.self) 
     .sorted(by: [SortDescriptor(keyPath: "Author", ascending: true), SortDescriptor(keyPath: "Title", ascending: true)]) 
Problemi correlati