2012-06-20 95 views
2

我正嘗試在其中一個關係中獲取計數最低的實體。這個實體叫做Solution,它有一個叫做gamesFeaturedIn的多對多關係,它與一個Game對象相關聯。所以我這樣做(使用RestKit方便的方法):核心數據提取:按關係計數排序

Solution* lowestPlayedSolution = [Solution findFirstWithPredicate: nil sortedBy: @"[email protected]" ascending: NO]; 
NSUInteger lowestPlayedCount = [lowestPlayedSolution.gamesFeaturedIn count]; 

的,這將引發錯誤:

'Keypath containing KVC aggregate where there shouldn't be one; failed to handle [email protected]'

我已經在幾年前發現了幾個帖子有類似的問題。也許事情已經改變了,舊的帖子並沒有給出任何明確的答案,我可以如何做到這一點,而無需將所有對象提取到內存中並手動執行計算。任何人?

編輯: 核心數據存儲是SQLite支持的,所以我不能使用瞬態屬性進行排序。

回答

1

對不起,打破了壞消息,但事情並沒有改變,至少在iOS5中。大多數情況下有兩種解決方法,兩者都非優雅。

  1. 你提到的那個,你之後在內存中進行排序。
  2. 您可以創建一個非瞬態屬性來存儲計數並在每次添加或刪除關係中的項目時進行更新。
0

爲該屬性創建一個臨時屬性(relationshipCount)和一個訪問器,在該屬性中返回該關係的計數。您現在可以對此屬性進行排序。

+0

對不起,忘了說這是一個SQLite支持的商店。即:不能對瞬態屬性進行排序。 –