iOS 5 - 通过核心数据属性将UITableView划分为多个部分

时间:2012-05-28 23:30:32

标签: ios uitableview core-data nsfetchedresultscontroller sections

我是Core Data的新手,所以请耐心等待。 ;)

在我的数据模型中,我有一个名为“Item”的实体,有2个属性,“Section”和“Name”。我已经使用Name填充了UITableView(我的主视图),但是我想将TableView分成3个不同的部分,由属性“section”决定。我认为“section”属性应该是一个整数,所以0表示第一部分,1表示第二部分,2表示第三部分。

我真的不确定如何将TableView分成几部分。我正在使用NSFetchedResultsController。这是当前的代码。

- (void)setupFetchedResultsController
{
// 1 - Decide what Entity you want
NSString *dbEntityName = @"Item"; // Put your entity name here

// 2 - Request that Entity
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:dbEntityName];

// 3 - Filter it if you want
//request.predicate = [NSPredicate predicateWithFormat:@"Item.name = what"];

// 4 - Sort it if you want
request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"name"
                                                                                 ascending:YES
                                                                                  selector:@selector(localizedCaseInsensitiveCompare:)]];
// 5 - Fetch it
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
                                                                    managedObjectContext:self.managedObjectContext
                                                                      sectionNameKeyPath:nil
                                                                               cacheName:nil];
[self performFetch];
}

另外,我想知道Xcode中数据模型中的Fetch Request模板是否会有所帮助。我看到了如何创建获取请求,但不知道如何使用它获取的内容做任何事情(例如:将获取的数据放入某个TableView部分。)

如果有人能提供帮助,我们将不胜感激。

1 个答案:

答案 0 :(得分:3)

创建NSfetchedResultsController时需要选择sectionNameKeyPath。这应该指向模型对象中的属性,对于同一部分中的每个项目都是相同的。

要显示节标题,请确保实现所有tableView dataSource方法,如NSfetchedResultsController文档中的示例所示。