我是核心数据的新手,目前我正在使用核心数据模型构建应用程序。我想要实现的是一个tableview分为每个月的节标题。目前我让应用程序工作,它显示每个单元格中的所有数据,但没有每个月的节标题。我想要的是带有“date”:“26/08/2012”的对象显示在标题为8月的部分下面。
我有一个带有以下数据的json webservice。
"date": "26/08/2012",
"hour": "18u00",
"type": "JPL",
"home": "KRC Genk",
"away": "Zulte-Waregem",
"homeScore": "2",
"awayScore": "0"
我构建了它的NSManagedObject子类,以及该类的一个类,用于将值存储在数据库中。这一切都有效。 为了将这些值放在tableview中,我有以下方法。
- (void)getKalender // attaches an NSFetchRequest to this UITableViewController
{
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Kalender"];
request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"date" ascending:YES]];
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
managedObjectContext:self.genkDatabase.managedObjectContext
sectionNameKeyPath:nil
cacheName:nil];
}
这就是我在cellForRowAtIndexPath
中所做的static NSString *simpleTableIdentifier = @"KalenderCell";
KalenderCell *cell = (KalenderCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if ((cell == nil) || (![cell isKindOfClass:KalenderCell.class]))
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"KalenderCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
// ask NSFetchedResultsController for the NSMO at the row in question
Kalender *kalender = [self.fetchedResultsController objectAtIndexPath:indexPath];
// Then configure the cell using it ...
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"dd/MM"];
NSString *dateStr = [dateFormat stringFromDate:kalender.date];
cell.lblType.text = kalender.type;
cell.lblHome.text = kalender.home;
cell.lblHomeScore.text = kalender.homeScore;
cell.lblAwayScore.text = kalender.awayScore;
cell.lblAway.text = kalender.away;
cell.lblDate.text = dateStr;
cell.lblHour.text = kalender.hour;
return cell;
但在这里我被困住了。任何人都可以帮助我如何使用NSFetchedResult控制器设置这些节头?
非常感谢提前!
答案 0 :(得分:0)
只需在NSFetchedResultsController初始化的 sectionNameKeyPath 中设置要使用的字段的名称,如下所示:
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:self.genkDatabase.managedObjectContext sectionNameKeyPath:@"date" cacheName:nil];
这应该将日期字符串设置为节名称。随意使用您想要的任何字段。