2011-05-03 73 views
1

我有3個核心數據實體:排序實體 - NSSortdescriptor

實體A和實體B和用戶方式一樣

實體A < ------ >>實體B < <相關----->用戶

我想根據該特定用戶的實體B中的條目數來對實體A中的條目進行排序。

我可以這樣做:

  • 獲取所有實體A項
  • 對於每個條目 - 獲取實體B項爲入境的數量和當前用戶
  • 數條目數爲該實體A入口商店,然後排序。

這雖然看起來非常愚蠢。

是否有無論如何我可以通過使用子查詢來排序實體A與NSSortDescriptor? 或者如果你知道任何其他方式,我應該解決這個問題?

回答

1

你不能在一個集合操作符上排序,所以沒有辦法給我們一個排序描述符來做你想要的。子查詢和所有謂詞一樣,只是基於測試找到對象,而不是對它們進行排序。

最簡單的解決方案是將一個瞬態屬性,例如bCount添加到EntityA。然後有getter方法返回相關EntityB對象計數:

-(NSNumber *) bCount{ 
    return [NSNumber numberWithInt:[self.bs count]]; 
} 

那麼你EntityA對象上bCount鍵排序。

+0

顯然不適用於SQLLite商店,如下所述:http://stackoverflow.com/questions/8090397/nssortdescriptor-with-a-function – Resh32 2013-04-11 13:48:03