私はSQLベースのコアデータ管理文書を持っていますが、NSFetchedResultsControllerにバックアップされたテーブルビューを使用してその内容を提示します。データは実際に表示されており、すべてそこにありますが、実際に並べ替えるようにしてもソートされません。フェッチされた結果コントローラを設定する方法は次のとおりです。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型の別の属性を試しました。いずれも機能しません。アプリケーションに変更が加えられる前に、テーブルビューがすぐに表示されても、データはソートされません。
アイデア?
NSSortDescriptor *descriptor=[[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];
希望に役立ちます:次のようにあなたの*ディスクリプタ初期
いつ '-performFetch:'を呼びますか?その呼び出しの直後に結果をプリントアウトしようとしましたが、コントローラとテーブルビューの間に問題がないことを確認しましたか? – paulmelnikow
performFetchは、setFetchedResultsControllerメソッドの一部として、つまりself.fetchedRestultsController =の一部として実行されます。これは、Appleの定型コードがそれを行う方法です。印刷に関しては、私は試して報告します。 – user1258240
次にサブクラス化する必要がありますか? – paulmelnikow