我已经努力了几个小时来实现看似简单的事情。
我有一个具有 NSDate 属性的实体 A。
我的目标是构建一个 UITableView 列出每个 A 对象,同时将它们分组到由其 NSDate 属性的 MM/YYYY 定义的部分。
我找到了这个 Apple 官方示例:http: //developer.apple.com/library/ios/#samplecode/DateSectionTitles/Introduction/Intro.html
所以:
- 我为我的实体 A 创建了一个新的瞬态可选属性“sectionTitleMonth”
- 我定义了新的动态属性(primitiveDate 和primitiveSectionTitleMonth)并在官方示例中实现了它们的setter 和keyPathsForValuesAffectingSectionTitleMonth。
我决定将此新代码移至类类别(A+nonGenerated),因为我不希望每次重新生成模型类时都清除所有内容。
之后我更新了我的表格视图委托,以便
- 它构建了一个与示例中完全相同的 NSFetchedResultsController。它现在使用我的瞬态属性作为 sectionNameKeyPath
- 它定义了与官方示例中的部分相关的方法
2点让我想知道这个解决方案是否好:
1) 我使用临时属性作为带有 SQL Lite 后端的 sectionNameKeyPath。可以吗?我在某处读过瞬态属性 + SQLLite 不是好朋友,但不记得在哪些情况下
2) 我在我的类类别 A+nonGenerated 中定义属性(primitiveDate 和primitiveSectionTitleMonth)。可以吗?因为正如官方文档中所述“但是,您不能使用类别向类添加其他实例变量”。但是这里的属性是动态的,我猜核心数据在生成 A 时会生成相关的实例变量,所以它应该可以正常工作......但我仍然有一点疑问:)
一切似乎都很好,但是......这是一个好的解决方案吗?我的意思是他们有更简单/更好的方法来实现我的目标吗?
请安慰我或给我一个更好的解决方案:o)