0

SQL ベースのコア データ マネージド ドキュメントがあり、NSFetchedResultsController に基づくテーブルビューを使用してそのコンテンツを表示します。データは確かに表示されており、すべてそこにありますが、実際に並べ替えようとしても並べ替えられていません。フェッチされた結果コントローラーを設定する方法は次のとおりです。

- (void)setupFetchedResultsController // attaches an NSFetchRequest to this UITableViewController
{

    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Notebook"];
    NSSortDescriptor *descriptor=[[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
    request.sortDescriptors = [NSArray arrayWithObject:descriptor];
    // no predicate because we want ALL the notebooks

    self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
                                                                    managedObjectContext:self.dbContext
                                                                      sectionNameKeyPath:nil
                                                                               cacheName:nil];

}

name は文字列型の属性です。タイプ NSDate の別の属性も試しました。それらのどれも機能しません-ドキュメントに変更が適用される前にアプリが起動した直後にテーブルビューが表示されても、データはソートされません。

アイデア?

4

3 に答える 3

1

*descriptor を次のように初期化します (「selector:」に注意してください)。

    NSSortDescriptor *descriptor=[[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];

それが役立つことを願っています!

于 2012-04-30T21:49:52.793 に答える
0

引用したメソッドの最後に performFetch を移動してみてください。私が使用している成功したメソッドには、フェッチを分離するのではなく、1 つのメソッドで実行するためのセットアップと呼び出しがあります。

于 2012-05-02T14:05:36.370 に答える
0

わかりました、これはスタック オーバーフローの X ファイル セクションに入ると思います。問題は解決されましたが、それを解決するために何をしたかはわかりません。過去数日間、アプリの他の部分に取り組んでいましたが、ある時点で、フェッチされた結果コントローラーの結果が再びソートされ始めました。おそらく、再起動したときに解決した Xcode のバグか、アプリの別の部分で何かを変更したのかもしれませんが、わかりません。私を助けてくれてありがとう...

于 2012-05-05T16:56:21.063 に答える