Ho un oggetto chiamato Delivery
con un gruppo di oggetti Customer
associato. Ogni oggetto di consegna memorizza anche un mainCustomerId
che è un NSNumber*
. Ho un NSFetchedResultsController che viene utilizzato per gestire l'origine dati per un UITableView
. Il problema è che voglio ordinare NSFetchedResultsController dal campo LastName del cliente (il cliente è di nuovo memorizzato in una relazione molti-a-molti chiamata customers
sull'oggetto Delivery
) dove uno dei clienti nel set ha un customerId uguale al Delivery's MainCustomerId.Ordina NSFetchedResultsController con oggetto in NSSet appartenente all'entità
The Delivery classe assomiglia a questo (solo le parti rilevanti)
@interface Delivery : NSManagedObject
@property (nonatomic, retain) NSNumber * mainCustomerId;
@property (nonatomic, retain) NSSet *customers;
@end
classe Customer assomiglia a questo
@interface Customer : NSManagedObject
@property (nonatomic, retain) NSNumber * customerId;
@property (nonatomic, retain) NSString * lastName;
// And the inverse relationship to the deliveries
@property (nonatomic, retain) NSSet *deliveries;
@end
ho bisogno di fare un NSSortDescriptor che fa qualcosa di simile (Nota, So che questo è il formato sbagliato e non funzionerà.Mi spero che comunichi l'idea)
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"customers.AnyobjectInSet.lastName WHERE AnyobjectInSet.customerId == masterCustomerId ascending:YES];
Ho provato diverse cose usando sottoquery e NSExpressions ma sono sempre venuto fuori corto dal momento che non posso usare alcuna funzionalità che usi Cocoa (come l'ordinamento con @selector) perché deve essere in grado di generare una vera query mysql senza elaborazione Cocoa di i dati. Ma sento che ci deve essere in qualche modo per farlo poiché sarebbe una query facile in mysql.
select * from Delivery JOIN Customer ON Customer.customerId=Delivery.mainCustomerId ORDER BY Customer.lastName;
sto cercando di evitare di dover ordinare dopo i risultati vengono recuperate e memorizzare l'ordinamento torna sull'oggetto (che sarebbe stato facile, ma sento che è la soluzione sbagliata dal momento che sto selezionando i dati rilevanti Deve esserci un modo per ordinare da esso). Qualsiasi aiuto sarebbe molto apprezzato.
Grazie in anticipo.
perché non fare uso di predicati e quindi applicare descrittore di sorta. – Leena
Grazie Leena, non sono abbastanza sicuro di come utilizzerei un predicato per risolvere questo problema. Non sto filtrando i miei risultati con niente. Devo solo ordinarli per oggetto cliente con l'ID corrispondente. Hai un esempio di cosa intendi? – johnrechd
Consultare questo documento: -http: //developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Predicates/predicates.html – Leena