8

私はUITableViewControllerのデータを駆動するためにNSFetchedResultsControllerを使用しています。私は(うまくなど)このようなルックスを取得しています管理対象オブジェクトの簡略化されたバージョン:NSFetchedResultsControllerを使用してテーブルセクションを作成する

Person: 
-(BOOL)hasPet; 
-(BOOL)hasDog; 

基本的に、私は唯一の私のテーブルには、ペットを持っているそれらのPersonオブジェクトを表示します。だからシンプルで、私は述語を使うことができます。今、hasPet == YESの人のために、私は2つのセクション、最初のセクションhasDog == YESのテーブルに入れたい、そして2番目はhasDog == NOです。これは私が少しあいまいなところです。ここで私の結果コントローラーを設定します。うまくいけば、誰かが正しい方向に私を助けることができます。

- (NSFetchedResultsController *)fetchedResultsController { 
if (nil != fetchedResultsController) { 
    return fetchedResultsController; 
} 

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Homework" inManagedObjectContext:managedObjectContext]; 
[fetchRequest setEntity:entity]; 

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"hasPet == %@", [NSNumber numberWithBool:YES]]; 
[fetchRequest setPredicate:predicate]; 

NSSortDescriptor *dogDescriptor = [[NSSortDescriptor alloc] initWithKey:@"hasDog" ascending:YES]; 
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; 
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:dogDescriptor, sortDescriptor, nil]; 

[fetchRequest setSortDescriptors:sortDescriptors]; 

NSFetchedResultsController *aController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:nil cacheName:nil]; 
aController.delegate = self; 
self.fetchedResultsController = aController; 

    // Release things 

return fetchedResultsController; 
} 

私の注意を引く必要があるソート記述子ですか?

答えて

15

これは簡単です! NSFetchedResultsControllerには、sectionNameKeyPath(この場合はhasDog)がイニシャライザに用意されています。

しかし、この1つの注意点は、セクション名はそれぞれ0 & になりますが、簡単に治療可能です。

関連する問題