Objective c 使用类别和核心数据进行自定义排序-框架是否支持?

Objective c 使用类别和核心数据进行自定义排序-框架是否支持?,objective-c,sorting,core-data,nssortdescriptor,Objective C,Sorting,Core Data,Nssortdescriptor,我正在为iPhoneiOS4.0开发,我有一个生日对象列表(日期+名称),使用核心数据存储。我想使用NSFetchedResultsController检索按每个生日对象的下一个生日排序的列表。为此,我需要为排序描述符定义自己的逻辑 我尝试使用: [NSSortDescriptor sortDescriptorWithKey:@"birthdayDate" ascending:YES

我正在为iPhoneiOS4.0开发,我有一个生日对象列表(日期+名称),使用核心数据存储。我想使用NSFetchedResultsController检索按每个生日对象的下一个生日排序的列表。为此,我需要为排序描述符定义自己的逻辑

我尝试使用:

[NSSortDescriptor sortDescriptorWithKey:@"birthdayDate" 
                              ascending:YES 
                               selector:@selector(compareNextBirthday:)];
其中,
compareNextBirthday:
是在我在NSDate类上创建的类别中定义的

但是,当我尝试获取数据时,会出现以下错误:“不受支持的NSSortDescriptor选择器:ComparenextBirthy:”


我花了好几个小时想弄明白这件事,但运气不好。。。核心数据支持这种自定义排序吗?我真的需要进行内存排序吗?

NSFetchedResultsController
内部排序是在持久存储级别执行的,因此如果使用SQLite作为后端,它将失败


对于类似的情况,我将对数据进行反规范化,并在实际生日的基础上存储月份和日期,以便您可以对其进行排序。

给定月份和日期字段,NSSortDescriptor如何显示从今天开始到昨天结束的排序?我看不出一个明显的解决方案。没有办法在持久存储级别进行这样的排序。您需要将它们拉入内存,以实现这种逻辑。你可以通过反规范化数据进行过滤,但这正是问题所在,不是吗?我看不出非规范化对海报有什么帮助。问题是“为什么这不起作用”,答案是肯定的。按下一个出生日期排序可以通过对数据进行非标准化来完成,因为它从等式中删除了年份。基于他的应用程序需求,他可以从那里进行探索。感谢您的回答-问题是核心数据中是否支持使用类别选择器进行自定义排序-我似乎得到了答案,但事实并非如此。然而,替代解决方案无效。最终,我所做的是在NSFetchedREsultsController获取之前计算下一个生日,将其保存到存储中的对象,并使用此属性进行排序。我发现它比在内存中排序更有效。