0

私はiPhoneアプリを作成しており、ユーザーが特定のボタンをタップすることに基づいて、フェッチした結果コントローラーで並べ替えを実行しようとしています。ユーザーがボタンをクリックすると、以下に示すコードを入力しましたが、次のようなエラーが発生します

-[NSSortDescriptor count]:認識されないセレクターがインスタンス0x6bc3250に送信されました

***キャッチされなかった例外'NSInvalidArgumentException'が原因でアプリを終了しています。理由:'-。これを修正し、ユーザーのボタンクリックに基づいてデータを並べ替えるにはどうすればよいですか?

- (IBAction)btnValue:(id)sender {
    self.model.frc_Work.delegate = self;

    self.model.frc_Work.fetchRequest.sortDescriptors = [NSSortDescriptor sortDescriptorWithKey:@"Value" ascending:YES];

    [NSFetchedResultsController deleteCacheWithName:@"Work"];

    NSError *error = nil;
    [self.model.frc_Work performFetch:&error];
}
4

1 に答える 1

4

sortDescriptorsフェッチ要求のプロパティに間違ったタイプのオブジェクトを割り当てているというコンパイラの警告が表示されるはずです。これは、NSArrayではなく、を必要としNSSortDescriptorます。

代わりに、次のように割り当てることができます。

NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"Value" ascending:YES];
self.model.frc_Work.fetchRequest.sortDescriptors = [NSArray arrayWithObject:sortDescriptor];

このプロパティが配列を取得する理由は、特定のキーに対して同じ値を持つ可能性のある値に連続して適用される並べ替え記述子のリストを指定できるようにするためです(たとえば、名前で並べ替え、次に名前が等しい場合は名前で並べ替える) )。

于 2012-12-01T21:36:32.223 に答える