8
ile tablo bölümleri oluşturma

UITableViewController benim verileri için NSFetchedResultsController kullanıyorum. yönetilen nesnenin bir basitleştirilmiş sürüm I (iyi örneğin) şöyle görünür getirilirken ediyorum:NSFetchedResultsController

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

Temelde, bir hayvanın varsa o Person nesneleri göstermek sadece benim masa istiyorum. Yani bu basit, bir yüklemeyi kullanabilirim. Şimdi, hasPet == YES olanlar için, onları 2 bölüm, ilk bölüm hasDog == YES ve ikinci hasDog == NO tablosuna koymak istiyorum. Burası biraz bulanık. İşte sonuç denetleyicimi yapılandıracağım, umarım birileri beni doğru yönde yönlendirmeye yardımcı olabilir.

- (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; 
} 

benim dikkatini odaklama olması gereken bir sıralama açıklayıcısı mı?

cevap

15

Bu basit! Sadece sectionNameKeyPath (bu durumda hasDog olacaktır) NSFetchedResultsController'ı başlatıcısında sağlayın. Bununla ilgili tek bir uyarı, bununla birlikte, bölüm isimleri sırasıyla 0 & 1 olacaktır, ancak kolayca iyileştirilebilir.

İlgili konular