[英]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.