8

Tôi đang sử dụng NSFetchedResultsController để chuyển dữ liệu cho số UITableViewController của mình. Một phiên bản đơn giản của đối tượng quản lý Tôi lấy ngoại hình như thế này (cũng ví dụ):Tạo các mục bảng với NSFetchedResultsController

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

Về cơ bản, tôi muốn bàn của tôi để chỉ hiển thị những Person đối tượng người có một con vật cưng. Vì vậy, đó là đơn giản, tôi có thể sử dụng một vị từ. Bây giờ, đối với những người hasPet == YES, tôi muốn đặt chúng trong bảng ở 2 phần, phần đầu tiên hasDog == YES và thứ hai là hasDog == NO. Đây là nơi tôi hơi mờ. Đây là nơi tôi cấu hình bộ điều khiển kết quả của tôi, hy vọng ai đó có thể giúp chỉ đạo tôi đi đúng hướng.

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

Trình mô tả sắp xếp nơi tôi cần tập trung sự chú ý của mình?

Trả lời

15

Thật đơn giản! Chỉ cần cung cấp NSFetchedResultsController với một sectionNameKeyPath (trong trường hợp này sẽ là hasDog) trong bộ khởi tạo của nó. Tuy nhiên,

Tuy nhiên, điều trước tiên là tên phần sẽ là 0 & 1 tương ứng, nhưng nó có thể dễ dàng chữa được.

Các vấn đề liên quan