我无法从按日期排序的核心数据中提取结果。从核心数据提取按格式化日期排序
我有一个包含足球比赛的数据库表。每场比赛都有主队,客队和开球时间。 kickoffTime是一个NSDate,用于存储比赛开始的日期和时间。
我想在一个TableView中显示一个查询的结果,这个查询被开始日期分为几个部分。以日期作为部分标题。
这比它首次出现时要复杂一点。由于时区不同,世界某个地区的某一天开始的比赛实际上是在另一个世界的不同日期开始的。所以我不能简单地忽略时间并将开始日期存储在另一列中。
我想要做的是创建一个自定义访问器,该访问器返回格式化日期,在用户所处的任何时区,然后使用它对结果进行排序和分区。下面是Match.h我的代码:
@dynamic kickoffTime;
@dynamic formattedKickoffTime;
@dynamic dateFormatter;
- (NSString *)formattedKickoffTime
{
[self willAccessValueForKey:@"kickoffTime"];
// Set the date formatter to the format we want to display the date
[dateFormatter setDateFormat:@"ccc, d MMM"];
// Format the date
NSString *myFormattedKickoffTime = [dateFormatter stringFromDate:[self kickoffTime]];
[self didAccessValueForKey:@"kickoffTime"];
// return the formatted date
return myFormattedKickoffTime;
}
- (NSDateFormatter *)dateFormatter
{
if (dateFormatter == nil)
{
dateFormatter = [[NSDateFormatter alloc] init];
}
return dateFormatter;
}
@end
然而,当我尝试获取与像这样的数据进行排序:
NSSortDescriptor *kickoffDescriptor = [[NSSortDescriptor alloc] initWithKey:@"formattedKickoffTime" ascending:YES];
...
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:appDelegate.managedObjectContext sectionNameKeyPath:@"formattedKickoffTime" cacheName:nil];
我收到以下错误信息:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'keypath formattedKickoffTime not found in entity <NSSQLEntity Match id=1>'
会有人提供一些建议吗?