以前使用带有 NSFRC 的 sectionNameKeyPath 的临时方法,按日期排序,按天正常工作。与此解决方案类似:How to Group by day in NSDate with NSPredicate - 需要创建多个 UITableView 部分
但是,一旦记录数量变大,我想将批处理添加到我的 NSFRC。批处理不起作用,因为它必须获取每条记录并运行瞬态方法来确定部分。请参阅:NSFetchedResultsController 正在加载所有行,即使我已经设置了批处理
事实上,如果您查看经常为此链接的苹果示例代码,您会注意到批处理实际上并不能正常工作。它立即获取所有行以运行瞬态方法。https://developer.apple.com/library/ios/samplecode/DateSectionTitles/Introduction/Intro.html
我不太确定从这里去哪里。按天分组是相当重要的,但批处理也是如此。
更新
我尝试了一种解决方案,预先计算 Day String 并将其添加到数据模型中。所以我所有的模型都有一个.created
nsdate 和一个.createdDayString
. 我按 排序created
,并尝试将createdDayString
用作sectionNameKeyPath
,但是虽然记录的顺序正确,但它会错误地对它们进行分段(分组),显然是使用日期名称的字母顺序。例如,第一部分都是星期三。
预先计算的解决方案
作为对我的解决方案的更新,如果我计算并存储与 Apple 在其示例中相同的值(日期除外,如此 SO 帖子所示:如何使用 NSPredicate 在 NSDate 中按天分组 - 需要创建多个 UITableView 部分)然后我可以将其用作sectionNameKeyPath
. 这行得通,但这确实意味着仅为此目的在核心数据对象上存储更多数据。如果有人有出色的解决方案,请保持打开状态。