ios MagicalRecord 排序。需要部分标题列表
Posted
技术标签:
【中文标题】ios MagicalRecord 排序。需要部分标题列表【英文标题】:ios MagicalRecord sorting. Need a list of section headers 【发布时间】:2014-02-20 06:56:19 【问题描述】:我有一个使用 MagicalRecord 访问的核心数据模型。我使用此代码来获取按类别排序和分组的表格视图:
frc = [ListActivity MR_fetchAllSortedBy:@"activityCategory,activityName"
ascending:YES withPredicate:nil
groupBy:@"activityCategory"
delegate:nil];
生成的表格视图如下所示:
在另一个视图中,我使用相同的数据,但这次只需要一个节标题列表,由属性“activityCategory”表示。我以为这是一件简单的事情,但事实并非如此。这段代码,例如:
frc = [ListActivity MR_fetchAllSortedBy:@"activityCategory"
ascending:YES withPredicate:nil
groupBy:nil
delegate:nil];
产生这个:
相反,我想要的只是类别列表(单数),即在第一个示例中提供节标题的属性。我尝试了其他几种配置,但意识到我只是把东西扔到墙上看它是否会粘住。与框架一样出色的 MagicalRecord 的文档很少。
有人可以指点我的解决方案吗?
谢谢!
【问题讨论】:
【参考方案1】:我最好的猜测是,在触发 fetched results 控制器之前,您需要对 fetch 请求进行更多配置。 MagicalRecord 使用命名约定,如果您将 find 更改为 request,它将改为返回 NSFetchRequest 对象。因此,对于您的情况,您需要类似
NSFetchRequest *request = [ListActivity MR_requestAllSortedBy:@"activityCategory" ascending:YES inContext:context];
[request setResultType:NSDictionaryResultType];
[request setReturnsDistinctResults:YES];
frc = [[NSFetchedResultsController alloc] initWithFetchRequest:request
managedObjectContext:context
sectionNameKeyPath:nil
cacheName:nil];
[frc MR_performFetch];
【讨论】:
感谢您的回复!我尝试了您的代码,添加了一个上下文,但得到了这个错误:“'NSFetchedResultsController' 没有可见的@interface 声明选择器'MR_performFetch'”我也找不到该选择器的任何快速帮助。我是否丢失了 MagicalRecord 的链接? 可能该方法不是公开的,我引用的是最新的代码,但我知道该方法在那里;破解源码看看。 该方法确实存在,但由于某种原因链接器没有找到它。或者也许还有另一个问题。我已经尝试清理它,检查构建阶段中列出的相关文件(NSManagedObject+MagicalRecord.m),确保在“-Prefix.pch”文件中导入“CoreData+MagicalRecord.h”并重新启动 Xcode。仍然得到错误。【参考方案2】:您可能需要考虑拥有一个ListActivityCategory
实体以及将类别存储为ListActivity
上的字符串
这样你就可以在所有返回的 ListActivity
对象中获取那些而不是避风港来“唯一”
【讨论】:
我是 Core Data 和 MagicalRecord 的新手。您是否建议数据模型中的实体之间存在关系?如果是这样,听起来可行,但我从未这样做过。你能提供一个sn-p吗? 如果你用谷歌搜索,我相信那里有很多很好的教程。 我知道,Mike,我一直在 Lynda.com 上观看 Simon Allardice 的课程。目前,我正在尝试决定走哪条路——用 casademora 建议的方法纠正错误或创建一个新实体,这听起来也很有希望。当我清理它时,我会发布解决方案。谢谢!以上是关于ios MagicalRecord 排序。需要部分标题列表的主要内容,如果未能解决你的问题,请参考以下文章
MagicalRecord NSFetchesResultsController 部分分组和排序 + 部分内也是如此
iOS MagicalRecord 对 tableview 的分组和排序。它们究竟是如何工作的?
具有 MagicalRecord 的多个数据库或仅将部分数据库同步到 iCloud
等效查询 MagicalRecord -> Realm.io
自定义 NSFetchreqeust - 按子 NSSet 属性排序父实体 [MagicalRecord+Coredata]