iphone - 实现 NSFetchedResultsSectionInfo

标签 iphone objective-c ios core-data nsfetchedresultscontroller

我有相当大量的数据,我想将其划分为自定义部分,基于某些键路径的部分和基于其他条件的其他部分。所以我想出了子类 NSFetchedResultsController 的想法. NSFetchedResultsController 的这个子类应该提供在其方法 -(NSArray*)sections 中返回部分的灵 active 它返回 id<NSFetchedResultsSectionInfo> 的数组.如果我可以通过自己的符合协议(protocol)的类实现,然后在fetchedResultsController的sections方法中传递对象的自定义数组,我想我可以完成我的任务。

有没有办法实现NSFetchedResultsSectionInfo在您自己的类中,然后在 fetchedResultsController 中返回此类对象的自定义数组子类?或者有一些库可以完成这个任务吗?

编辑

让我描述一下我想要实现的目标。我有联系人模型作为 NSManagedObject 子类。该实体具有称为状态的属性,该属性可以是未知的、已知的和未识别的。现在,我希望对这些联系人进行分区,使所有未知联系人都出现在一个部分中,而未识别的联系人也应该位于另一个不同的部分中。现在,所有其他已知联系人应根据联系人姓名位于不同部分。如何做到这一点?

我的表格 View 应填充为;

Unknown Contacts (sorted into a single section according to date )
  - 
  -
Known Contacts(A)(known contacts sorted into different sections according to the name)
  -
  -
Known Contacts(B)
  -
  -
  -
Known Contacts(C)
  -
  -
  -
  -
  -
  -
Known Contacts(Z)
 -
UnIdentified Contacts(sorted into a single section with first name)
  -
  -
  -

最佳答案

NSFetchedResultsController 已经实现了这一点。

NSArray* sectionsArray = self.fetchedResultsController.sections;

要实现特殊部分,请遵循 Apple 示例代码 DateSectionTitles 中的原则。 。模式如下:

  • 创建一个新的 transient 属性sectionIdentifier。与示例代码一样,还在托管对象子类中包含 primitiveSectionIdentifier 属性。这是您在 FRC 中用于 sectionNameKeyPath 的属性。

  • 设计一个正确排序的方案。将所有排序和计算逻辑放入类实现文件的 sectionIdentifier 的自定义 getter 中。例如,您可以简单地使用两个字符在大写字母“A”之前排序,这可能是常规节标题的第一个。你也可以把它变成一个数字,比如 1 和 2 代表你的前两个部分,3+ 代表字母表中的第一个字母。

  • titleForHeaderInSection 中解码您的方案以显示所需的内容。

我最近为一位客户做了这件事,该客户对大量联系人列表采用了非标准编码方案,表明了一些营销分割。部分标识符的数据也是从几个不同的属性中提取的。

关于iphone - 实现 NSFetchedResultsSectionInfo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13860547/

相关文章:

ios - Assets 目录编译器无故警告

iphone - 将 UITextField 与长字符串一起使用时出现问题

ASP.NET Webforms 不为 Chrome/iOS 呈现回发 JavaScript 函数

ios - 是否可以在获得初始权限后向 UIUserNotificationCategory 添加新操作?

iphone - 如何在 iPhone 应用程序中使用 FB Graph 搜索 API

ios - 用于释放密码的 iPhone 内存管理(生产中的 Malloc Scribble?,用零填充释放内存?)

ios - 为什么 cv::resize 这么慢?

ios - 如何删除ios模拟器safari缓存

ios - Tabbar > Split > NavigationController 结果为 [MasterViewController topViewController] : unrecognized selector sent to instance: Core Data

iphone - 无法从 iOS 中创建的 plist 文件中获取值