2012-04-30 13 views
0

私は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:)]; 

希望に役立ちます:次のようにあなたの*ディスクリプタ初期

+0

いつ '-performFetch:'を呼びますか?その呼び出しの直後に結果をプリントアウトしようとしましたが、コントローラとテーブルビューの間に問題がないことを確認しましたか? – paulmelnikow

+0

performFetchは、setFetchedResultsControllerメソッドの一部として、つまりself.fetchedRestultsController =の一部として実行されます。これは、Appleの定型コードがそれを行う方法です。印刷に関しては、私は試して報告します。 – user1258240

+0

次にサブクラス化する必要がありますか? – paulmelnikow

答えて

0

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

1

(もの "セレクタ" を注意してください)!

+0

これを試してみました。何も変わりません... – user1258240

+0

btw、私は@selector(比較:)セレクタ、文字列名、および別の日付属性を使用する前に試しました。 nothin .. – user1258240

0

performFetchを引用符で囲んだメソッドの最後に移動してみてください。私が使用している成功したメソッドは、セパレートとコールが分離されているのではなく、1つのメソッドでフェッチを実行します。

関連する問題