0

我已经努力了几个小时来实现看似简单的事情。

我有一个具有 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)

4

1 回答 1

0

你的方法似乎很好。将访问器放在类别类文件或原始文件中没有明显区别。您没有违反文档中的警告,因为您实际上并未将实例变量添加到模型类。

于 2011-10-05T23:26:36.210 回答