我刚刚在两周前开始使用ObjectiveC而且我是一个完整的菜鸟,所以,对我来说很容易。 我想用以下内容加载tableView:
即将举行的活动
.event4 xx / xx / 2010
.event5 xx / xx / 2010
通过活动
.event1 xx / xx / 2008
.event4 xx / xx / 2008
.event5 xx / xx / 2008
我正在使用带有fetchedResultsCntroller的Core Data。实现这一目标的最佳方法是什么?
最诚挚的问候 里卡多卡斯特罗
答案 0 :(得分:1)
设置sortDescriptors
上NSFetchRequest
的{{1}}。如果您的NSFetchedResultsController
上有一个名为date
的字段,则可以在该密钥上创建排序描述符。
要分成多个部分,您需要在对象上添加一个返回“即将发生的事件”或“过去的事件”的方法,然后将该方法的名称用作NSManagedObject
的{{1}} 1}}。
将排序描述符中的排序与对象拆分为多个部分的方式相匹配非常重要。即。您不希望任何过去的事件在即将发生的事件之前被排序,但对于您的情况应该不会太难。 :)
答案 1 :(得分:1)
@implementation NSManagedObject (dateSection) - (NSString *)sectionNameGen { [self willAccessValueForKey:@"sectionNameGen"]; NSString *sectionName =[[[NSString alloc]init]autorelease]; NSCalendar *cal = [NSCalendar currentCalendar]; NSDateComponents *components = [cal components:(NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit) fromDate:[NSDate date]]; NSDate *today = [cal dateFromComponents:components]; components = [cal components:(NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit) fromDate:[self valueForKey:@"date"]]; NSDate *tempDate = [cal dateFromComponents:components]; if([today isEqualToDate:tempDate]) { sectionName = @"Today's Events"; } else { if ([today timeIntervalSinceDate:tempDate]<0) { sectionName = @"Upcoming Events"; } else { sectionName=@"Passed Events"; } } [self didAccessValueForKey:@"sectionNameGen"]; return sectionName; } @end
我在sectionNameKeyPath
中使用了sectionNameGen