2012-09-10 269 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的單一屬性。 –