CoreData:将 MagicalRecord 与 FetchedResultsController 和自定义 sortDescriptor 一起使用

Posted

技术标签:

【中文标题】CoreData:将 MagicalRecord 与 FetchedResultsController 和自定义 sortDescriptor 一起使用【英文标题】:CoreData: Use of MagicalRecord with FetchedResultsController and a custom sortDescriptor 【发布时间】:2013-01-08 13:29:35 【问题描述】:

我刚刚开始使用MagicalRecord library,以便更轻松地使用 CoreData。我正在使用 FRC,但不知道如何使用自定义 sortDescriptor 进行设置,例如

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc]
                        initWithKey:@"someAttribute"
                          ascending:YES
                           selector:@selector(localizedCaseInsensitiveCompare:)];

目前我检索 FRC 的电话是这样的:

_fetchedResultsController = [Language MR_fetchAllSortedBy:@"someAttribute"
                                                ascending:YES
                                            withPredicate:nil
                                                  groupBy:nil
                                                 delegate:self];

似乎我正在寻找一种“简单”地将自定义选择器添加到 MR_fetchAllSortedBy 的方法。比如:

_fetchedResultsController = 
       [Language MR_fetchAllSortedBy:@"someAttribute"
                           ascending:YES
                            selector:@selector(localizedCaseInsensitiveCompare:)
                       withPredicate:nil
                             groupBy:nil
                            delegate:self];

谁能给我一些关于如何实现这一目标的指示?可以使用类别吗?

提前致谢,

乔斯。

【问题讨论】:

【参考方案1】:

我今天遇到了完全相同的问题。您无法通过 MR_FindAll 方法设置自定义排序描述符,但您可以创建自己的获取请求,同时仍然利用 Magical Records 样板代码:

NSFetchRequest *fetchRequest = [Sites MR_createFetchRequest];
fetchRequest.sortDescriptors = @[[[NSSortDescriptor alloc] initWithKey:@"title" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)]];

self.sitesArray = [NSManagedObject MR_executeFetchRequest:fetchRequest];

【讨论】:

以上是关于CoreData:将 MagicalRecord 与 FetchedResultsController 和自定义 sortDescriptor 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

CoreData (MagicalRecord) 返回错误的值

(CoreData) MagicalRecord 突然停止持久保存

在 TodayExtension 中使用 MagicalRecord (CoreData)

CoreData(MagicalRecord) 获取保存的对象

MagicalRecord (CoreData) + Today Extension (iOS8)... 他们会玩吗?

使用 MagicalRecord 3 的 CoreData 内存设置