使用 FetchedResultsController 显示“过去”和“即将到来”部分 UITableView
Posted
技术标签:
【中文标题】使用 FetchedResultsController 显示“过去”和“即将到来”部分 UITableView【英文标题】:Showing "past" and "upcoming" sections UITableView with FetchedResultsController 【发布时间】:2011-12-04 05:49:01 【问题描述】:我在按过去和未来对表格视图进行分组时遇到了一些困难。这将由我的核心数据模型中的日期字段确定。因此,所有日期>今天的项目都将是即将到来的,所有日期
【问题讨论】:
【参考方案1】:你可以在你的实体类中使用这个函数:
-(NSString*)dateToStringForSectionTitels
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSString *formattedDateString;
[dateFormatter locale];
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.startDate];
NSDate *otherDate = [cal dateFromComponents:components];
if([today isEqualToDate:otherDate])
formattedDateString = @"Today";
else
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
formattedDateString = [dateFormatter stringFromDate:self.startDate];
NSTimeInterval distanceBetweenDates = [self.startDate timeIntervalSinceDate:[NSDate date]];
double secondsInAnMinute = 60;
NSInteger minutsBetweenDates = distanceBetweenDates / secondsInAnMinute;
if (minutsBetweenDates<30)
formattedDateString = @"Starting Soon";
else if(minutsBetweenDates<0)
formattedDateString = @"In the past";
return formattedDateString;
它会返回
-
如果事件在未来,则字符串中的日期
如果事件是今天,则为“今天”。
如果活动将在 30 分钟后开始,则为“即将开始” - (您可以根据需要调整范围。
如果事件在过去,则为“过去”。
然后只需将“dateToStringForSectionTitels”传递给您的获取结果控制器。
祝你好运。
【讨论】:
以上是关于使用 FetchedResultsController 显示“过去”和“即将到来”部分 UITableView的主要内容,如果未能解决你的问题,请参考以下文章
在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?
Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)