日期部分标题不起作用
Posted
技术标签:
【中文标题】日期部分标题不起作用【英文标题】:Date Section Titles don't work 【发布时间】:2011-11-13 16:55:22 【问题描述】:我在按日期划分的 tableview 上遇到问题。 我以苹果为例:DateSectionTitles
我不在乎年份。我需要一个月和一天。 所以我像这样调整我的代码:
在我的 CoreData 类中:
- (NSString *)sectionIdentifier
[self willAccessValueForKey:@"sectionIdentifier"];
NSString *tmp = [self primitiveSectionIdentifier];
[self didAccessValueForKey:@"sectionIdentifier"];
NSLog(@"!Temp");
if (!tmp)
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:(NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:[self timeStamp]];
tmp = [NSString stringWithFormat:@"%d", ([components month]*100) + [components day]];
[self setPrimitiveSectionIdentifier:tmp];
return tmp;
在我的主控制器中的 titleForHeaderInSection 方法中:
NSInteger month = numericSection / 100;
NSInteger day = numericSection - (month * 100);
NSString *titleString = [NSString stringWithFormat:@"%d %d",day, month];
return titleString;
但是当我运行我的应用程序时,我收到了这条消息:
CoreData: 错误: (NSFetchedResultsController) 一个部分返回了部分名称键路径“sectionIdentifier”的 nil 值。对象将被放置在未命名的部分中
你知道为什么吗? 感谢您的帮助!
【问题讨论】:
【参考方案1】:通常为 nsmanagedobject 编码瞬态属性的一个常见错误是人们忘记在数据模型文件 (xcdatamodeld) 中也“启用”瞬态属性。
【讨论】:
启用瞬态属性节省了我的时间。谢谢!【参考方案2】:从逻辑上讲,如果在您的代码的这一行会发生这种情况
NSDateComponents *components = [calendar components:
(NSMonthCalendarUnit | NSDayCalendarUnit)
fromDate:[self timeStamp]];
[self timeStamp]
返回一个无效的NSDate
。如果是这种情况,请检查NSLog
语句。
【讨论】:
没有打印。它没有进入 - (NSString *)sectionIdentifier 方法:/ 嗯,太好了。你找到了问题。 这无法从您发布的代码中解决。返回创建数据的位置,检查 sqlite 持久存储等,直到找到错误。以上是关于日期部分标题不起作用的主要内容,如果未能解决你的问题,请参考以下文章