Delivery
オブジェクトのセットがCustomer
関連付けられているというオブジェクトがあります。各Deliveryオブジェクトには、mainCustomerId
であるaも格納されNSNumber*
ます。のデータソースを管理するために使用されるNSFetchedResultsControllerがありますUITableView
。customers
問題は、NSFetchedResultsControllerをCustomerのlastNameフィールド(顧客はオブジェクトで呼び出される多対多の関係に格納されます)で並べ替えたいということですDelivery
。ここで、セット内の顧客の1つはDeliveryのMainCustomerIdと等しいcustomerIdを持っています。
配信クラスは次のようになります(関連する部分のみ)
@interface Delivery : NSManagedObject
@property (nonatomic, retain) NSNumber * mainCustomerId;
@property (nonatomic, retain) NSSet *customers;
@end
カスタマークラスは次のようになります
@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
このようなことを行うNSSortDescriptorを作成する必要があります(注:これは間違った形式であり、機能しないことを知っています。ただし、アイデアが伝わることを願っています)
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"customers.AnyobjectInSet.lastName WHERE AnyobjectInSet.customerId == masterCustomerId ascending:YES];
サブクエリとNSExpressionsを使用していくつかのことを試しましたが、Cocoaを使用する機能(@selectorでの並べ替えなど)を使用できないため、Cocoa処理なしで実際のmysqlクエリを生成できる必要があるため、常に不足しています。データ。しかし、これはmysqlでの簡単なクエリであるため、何らかの方法でこれを行う必要があるように感じます。
select * from Delivery JOIN Customer ON Customer.customerId=Delivery.mainCustomerId ORDER BY Customer.lastName;
結果がフェッチされた後に並べ替える必要がなく、並べ替え順序をオブジェクトに保存しようとしています(これは簡単ですが、関連するデータを選択しているため、間違った解決策だと思います。方法が必要です。並べ替える)。どんな助けでも大歓迎です。
前もって感謝します。