日期部分标题不起作用

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 持久存储等,直到找到错误。

以上是关于日期部分标题不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在引导日期选择器更改月份事件不起作用

MVC2:日期选择器在编辑器模板中不起作用

自定义表单验证注释不起作用

下拉菜单在某些页面上不起作用

引导日期选择器不起作用

x.日期 |日期:'hh:mm' 不起作用