Mam obiekt o nazwie Delivery
, który ma zestaw powiązanych obiektów z obiektami. Każdy obiekt dostawy przechowuje także mainCustomerId
, który jest NSNumber*
. Mam NSFetchedResultsController, który jest używany do zarządzania źródłem danych dla UITableView
. Problem polega na tym, że chcę posortować NSFetchedResultsController przez pole lastName klienta (klient ponownie jest przechowywany w relacji wiele do wielu o nazwie customers
na obiekcie Delivery
), gdzie jeden z klientów w zestawie ma ID klienta równe MainCustomerId dostawy.Sortuj NSFetchedResultsController z obiektem w NSSet należącym do jednostki
dostawy klasy wygląda następująco (tylko odpowiednie części)
@interface Delivery : NSManagedObject
@property (nonatomic, retain) NSNumber * mainCustomerId;
@property (nonatomic, retain) NSSet *customers;
@end
Klasa klienta wygląda następująco
@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
muszę zrobić NSSortDescriptor że robi coś tak (uwaga, Wiem, że to niewłaściwy format i nie zadziała. Mam nadzieję, że komunikuje się z tym pomysłem.
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"customers.AnyobjectInSet.lastName WHERE AnyobjectInSet.customerId == masterCustomerId ascending:YES];
Próbowałem kilka rzeczy przy użyciu podkwerend i NSExpressions, ale zawsze pojawiają się krótkie, ponieważ nie mogę używać żadnych funkcji, które używają Cocoa (jak sortowanie z @selector), ponieważ musi być w stanie wygenerować prawdziwe zapytanie mysql bez przetwarzania kakao z dane. Ale czuję, że musi to być jakiś sposób, aby to zrobić, ponieważ byłoby to łatwe zapytanie w mysql.
select * from Delivery JOIN Customer ON Customer.customerId=Delivery.mainCustomerId ORDER BY Customer.lastName;
Próbuję uniknąć konieczności sortowania po wyniki są naciągane i przechowywać porządek z powrotem na obiekt (co byłoby łatwe, ale czuję, że jest to złe rozwiązanie, ponieważ jestem wybierając odpowiednie dane Musi być sposób sortowania według tego). Każda pomoc będzie bardzo ceniona.
Z góry dziękuję.
dlaczego nie można skorzystać z orzecznika, a następnie zastosować deskryptor sortowania. – Leena
Dzięki Leena, nie jestem do końca pewien, w jaki sposób mogę użyć predykatu, aby rozwiązać ten problem. Nie filtruje moich wyników przez nic. Po prostu muszę zamówić je według obiektu klienta z odpowiednim identyfikatorem. Czy masz przykład tego, co masz na myśli? – johnrechd
Skorzystaj z tego dokumentu: -http: //developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Predicates/predicates.html – Leena