【发布时间】:2010-12-27 02:41:13
【问题描述】:
我有一个核心数据设置,其中每个对象都有一个 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 时,我的核心数据设置工作得很好,而且我也知道我的锻炼日期字符串方法工作正常。但是当我将 sectionNameKeyPath 设置为锻炼日期字符串时,它不仅不显示部分标题,而且每次添加锻炼对象时,程序都会因以下错误而崩溃:
由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无效更新:第1节中的行数无效。更新后现有节中包含的行数(3)必须等于行数更新前包含在该节中 (1),加上或减去从该节插入或删除的行数(0 插入,0 删除)。'
这是我的第一个真正的 iPhone 项目,我没有任何设置表格部分的经验。相信我,我在 Google 上花了很多时间寻找解决方案。
【问题讨论】:
标签: ios objective-c iphone uitableview core-data