![](/img/trans.png)
[英]CoreData: Fetch count of to-many relationship with NSDictionaryResultType
[英]CoreData fetch with NSSortDescriptor by count of to-many relationship
我有2個CoreData實體(Person,Pet),它們具有以下關系:
一個人可以有多個寵物。 因此,Person-> Pet存在To-Many關系。
我想取所有的人,根據寵物的數量排序,他們擁有寵物最多的人是第一個,寵物最少的人是最后一個。
在獲取人員列表時,我嘗試使用如下的NSSortDescriptor:
[NSSortDescriptor sortDescriptorWithKey:@"pets.count" ascending:NO]
我認為“人”上的“寵物”屬性允許我使用NSSet的count屬性進行排序。 唉,CoreData抱怨這個錯誤:
Fetch exception to-many key not allowed here
這是一個完全錯誤的方法嗎? 我怎么能用CoreData fetch做這樣的事情?
在此先感謝您的幫助。
嘗試使用集合運算符 :
[NSSortDescriptor sortDescriptorWithKey:@"pets.@count" ascending:NO]
這不能直接應用(對於獲取請求),您需要執行fetch,然后對結果數組運行排序( sortedArrayUsingDescriptors:
。
如果要在獲取時進行排序,則需要向保存計數編號的實體添加(非瞬態)屬性。
看看這個答案https://stackoverflow.com/a/20317087/2567126
基本上,您在NSManagedObject上創建持久屬性,並在從關系中添加或刪除子對象時更新屬性計數。
將密鑰的格式更改為@"pets.@count"
我還需要在Swift中做同樣的事情。 我只想跟隨:
allCategory.sort { (category1, category2) -> Bool in
return category1.tasks?.count > category2.tasks?.count
}
這對我有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.