2012-09-10 196 views
0

总运营商在谓词如果我使用谓词与IN操作符用于读取使用核心数据的结果:使用与核心数据

NSPredicate *inPredicate = [NSPredicate predicateWithFormat: @"attribute IN %@", aCollection]; 

和属性具有独特的价值,这是正确的假设返回结果的顺序与集合中的值的顺序相对应,还是需要在之后对它们进行排序?

回答

0

您需要使用NSSortDescriptor对它们进行排序。

如果要按IN集合的顺序排序,请按照Core Data (SQLite backed) custom sorting of strings中描述的模式进行排序,但添加一个Integer属性而不是布尔值,并使整数值与您的集合的索引相对应。然后创建一个NSSortDescriptor按此自定义属性进行排序。

如果需要更复杂的排序,可以将CoreData放在一边,并使用[NSArray sortedArrayUsingComparator:]对fetchedObjects数组进行排序。

+0

您可以根据IN语句中使用的集合中的顺序创建一个排序描述符吗? –

+0

检查http://stackoverflow.com/questions/4393278/core-data-sqlite-backed-custom-sorting-of-strings。通过向你的NSManagedObject添加一个自定义属性,使其成为一个整数,其值与你的排序规则相对应(即第一个在collection = 1,第二个collection = 2)。 – CSmith

+0

但我有不同顺序的多个集合,所以它不是可以分配给NSManagedObject的单一属性。 –