NSOrderedSets salvare l'ordine degli oggetti nella tabella. Se si accede a un'istanza di sottoclasse NSManagedObject con una proprietà che è un NSOrderedSet, allora saranno in ordine.come ordinare i risultati di una NSFetchedResultsController utilizzando l'ordine di un NSOrderedSet
Tuttavia, non c'è apparentemente alcun modo per accedere a tale fine utilizzando un NSSortDescriptor quando si crea un NSFetchRequest.
Risulta dal grezzo SQLite DB, che l'ordine è memorizzato in campi denominati Z_FOK_<relationship name>
. I dati sono disponibili, ma non sembrano essere visibili attraverso le API dei dati di base.
Qualcuno conosce un modo per scrivere un NSSortDescriptor che funzioni con un DB SQLite per restituire i risultati nell'ordine specificato da NSOrderedSet?
Aggiornamento
questione connessa: NSFetchedResultsController and NSOrderedSet relationships
Questo sembra essere quello che vedo troppo ... io proprio non riuscivo a credere che non ci sia qualche supporto speciale per questo in modo che NSSortDescriptor NSFetchedResultsControllers possono usufruire dell 'ordine. Altrimenti, gli sviluppatori hanno ancora bisogno di aggiungere e gestire manualmente una proprietà "sortOrder" - che è una sorta di sviamento dello scopo di NSOrderedSet. –
@CoreyFloyd: Si noti che si possono avere due rapporti ordinati 'A1 <-->> B' e' A2 <-->> B' completamente diversi ordinamenti degli oggetti 'B', così "recupero di oggetti b ordinati secondo il rapporto ordinato" sarebbe comunque ambiguo. –
NSFetchRequest deve essere creato con un descrittore di ordinamento. Ma se ci fosse un modo per crearlo senza un descrittore di ordinamento (usando una categoria, una sottoclasse, ecc ...), forse, quando avevi eseguito la richiesta di recupero, l'impostazione predefinita sarebbe NSOrderedSet. Molto probabilmente sarebbe solo un comportamento indefinito, ma potrebbe valerne la pena. –