繁体   English   中英

尝试在表视图中按日期对Core Data对象进行排序

[英]Trying to sort Core Data objects by date in table view

我有一个Core Data设置,其中每个对象都有一个NSDate,以及一个将日期作为字符串返回的方法(即“ 12/15/2009”)。 对象显示在表格视图中,我想根据日期字符串将它们分为几部分。 Apple在CoreDataBooks应用程序中的示例代码使用以下行:

NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:@"author" cacheName:@"Root"];

因此,我对其进行了更改并在我的项目中使用了这一行:

NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:@"workoutDateString" cacheName:@"Root"];

其中“ workoutDateString”是将锻炼对象的日期作为字符串返回的方法。 当我将sectionNameKeyPath保留为nil时,我的核心数据设置可以完美运行,并且我还知道我的executionDateString方法可以正常工作。 但是,当我将sectionNameKeyPath设置为executionDateString时,它不仅不显示节标题,而且每次添加锻炼对象时,程序都会因以下错误而崩溃:

由于未捕获的异常“ NSInternalInconsistencyException”而终止应用程序,原因:“无效更新:第1节中的行数无效。更新(3)之后现有节中包含的行数必须等于该行中包含的行数更新(1)之前的部分,加上或减去从该部分插入或删除的行数(已插入0,已删除0)。”

这是我第一个真正的iPhone项目,并且我没有设置表格部分的经验。 相信我,我在Google上花费了很多时间来寻找解决方案。

我遇到了完全相同的问题,并花费了大量时间进行研究。

NSFetchedResultsControllerDelegate的“动画更改”代码在将项目添加到一个全新的节中或将某个节中的所有项目都移到另一个节而使原始节中有0个项目时引起严重的问题。

我要么删除所有执行段/行插入/删除操作的代码,要么使用Jeff LaMarche的代码对其进行修复。 http://iphonedevelopment.blogspot.com/2009/11/one-fix-to-nsfetchedresultscontroller.html

编辑:您实现了[tableView:titleForHeaderInSection],对吗?

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { 
    id <NSFetchedResultsSectionInfo> sectionInfo = [[<#Fetched results controller#> sections] objectAtIndex:section];
    return [sectionInfo name];
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM