2014-10-17 56 views
0

我有一個管理對象遊覽有很多點。 當我加載要顯示在表格中的點時,我用作我的數據遊覽點。Coredata和關係的自動排序

每個點都有一個字段'level',表示它們應該出現的順序。 如何讓tour.points根據point.level自動排序?

我是否需要對排序描述進行單獨的提取,還是有直接的方法?

回答

2

使用核心數據填充表格視圖的最佳方式是NSFetchedResultsController。 FRC具有一個獲取請求,您可以將請求附加到謂詞和排序描述符。

在檢查「使用核心數據」時,您可以從Xcode模板中複製一些現成的示例代碼。

在獲取的結果控制器創建方法中,添加謂詞和排序描述符。我假設你正在獲取名爲Point的實體,該實體與Tour有一對一的關係。

fetchRequest.predicate = [NSPredicate predicateWithFormat:@"tour = %@", tourObject]; 
fetchRequest.sortDescriptors = @[[NSSortDescriptor 
    sortDescriptorWithKey:@"level" ascending:YES]]; 
+0

謝謝,我只是想知道是否會有'註釋'的方式,如JPA。但是額外的請求不是問題,我已經有了功能。 – 2014-10-18 12:53:15

+0

我不明白在這方面的「註釋」。 – Mundi 2014-10-18 13:24:48

+0

在JPA中,您可以註釋@OrderBy(「lastname ASC」)這樣的字段,因此該字段在被調用時會自動排序。保存必須做一個額外的查詢。 – 2014-10-18 15:34:30

0

根據我的經驗,我相信你將不得不做一個單獨的排序。作爲一個事物的參考,你可以過濾陣列,NSPredicate做:

http://www.infragistics.com/community/blogs/stevez/archive/2013/10/21/ios-objective-c-filtering-a-nsarray-using-nspredicate.aspx

我希望你將不得不這樣做將是這一類的東西:

NSSortDescriptor *level = [[NSSortDescriptor alloc] initWithKey:@"level" ascending:YES]; 
NSArray *pointSortedByLevel = [results sortedArrayUsingDescriptors:[NSArray arrayWithObjects:level, nil]]; 

,其中結果是你的NSArray在您的對象中找到的積分之旅遊覽