iOS MagicalRecord 表格 View 的分组和排序。它们究竟是如何工作的?

标签 ios uitableview magicalrecord

我有一个通过 MagicalRecord 使用 Core Data 的小型测试应用程序,目的是学习如何按类别对事件进行分组。我想在一个分组的 TableView 中显示数据,其中共享一个公共(public)类别的所有事件的名称都在类别下分组在一起。因此,我有一个名为 ListActivity 的实体,它有两个属性,“name”和“category”,都是字符串。

目前,我正在使用:

frc = [ListActivity MR_fetchAllGroupedBy:@"category" withPredicate:nil sortedBy:@"name" ascending:YES];

在我看来(无法找到相反的明确文档)这似乎符合要求,但事实并非如此。

在下面的屏幕截图中,我在类别“K”下输入了一个名为“a”的事件。

enter image description here

到目前为止还不错。 接下来,我在类别“A”下输入名为“k”的事件。

enter image description here

虽然类别似乎通过以下方式将自己正确安排为部分标题:

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    id <NSFetchedResultsSectionInfo> sectionInfo = [[frc sections] objectAtIndex:section];
    return [sectionInfo name];

}

事件本身漂浮在分配给它们的组(类别)之外,但仍按字母顺序排列。

我已经遍及整个网络,遍及 SO、Github 等,似乎找不到任何可以解释 MR 的 fetchAll 和 findAll 方法的分组和排序行为的内容,除了一般性术语。有 MagicalRecord 经验的人可以帮忙,或者给我指点文档或教程吗?

谢谢!

最佳答案

MagicalRecord 中的分组助手只是 NSFetchResultsController 之上的一种便捷方法。与该类相关的任何文档都直接适用于此方法。 MagicalRecord 方法的唯一额外注意事项是它们将为您执行提取。此外,您可能需要重新获取(或使用 MR_performFetch)数据以获取反射(reflect)在内存中的数据中的数据更新。

也就是说,您的分组取决于数据模型中的几项内容。类别属性必须存在于您要分组的实体数据中。看起来你有这一步。如果您想响应数据的变化,您需要实现 NSFetchedResultsControllerDelegate 协议(protocol)并在从 MR_fetchAll* 方法返回的 NSFRC 上设置一个委托(delegate)。

我建议查看 NSFetchedResultsController 示例,因为这些示例直接适用于 MagicalRecord 获取助手的所有用途。

关于iOS MagicalRecord 表格 View 的分组和排序。它们究竟是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21107081/

相关文章:

iphone - 魔录iCloud更新核心数据

ios - Xamarin.Forms SkiaSharp Gradient 适用于 Android 但不适用于 iOS

ios - 应用程序传输安全性不再适用于 iOS 11 Xcode 9

iphone - 从 iPhone 应用程序中启动指南针应用程序

ios - 更改无法识别我附加到后台线程的 NSFetchedResultsController

ios - 核心数据并发 `performBlockAndWait:` NSManagedObjectContext zombie

ios - 自动布局 : Pin top of view to bottom of another view programatically

ios - 如何设置表格部分单元格左侧和右侧的空间

swift - TableViewController 中的多个自定义单元格

iOS Swift 总结 CoreData 属性值