0
A
回答
0
是的,Core Data中的管理對象沒有特定的順序。您可以通過在獲取請求上設置sortDescriptors
屬性來獲取它們。如果您已經在執行讀取操作,則比先讀取然後在內存中進行排序更快,效率更高,例如,通過調用sortedArrayUsingDescriptors
。
所以,如果你要獲取所有事件,你會做如下:
let fetchRequest: NSFetchRequest<Event> = Event.fetchRequest()
fetchRequest.sortDescriptors = [NSSortDescriptor(key: #keyPath(Event.name),
ascending: true)]
或者,如果你有一個從活動到被稱爲usersWhoLiked用戶多對一對多的關係,你可以獲取該由至少一個用戶年齡超過50歲喜歡以下所有事件:
let fetchRequest: NSFetchRequest<Event> = Event.fetchRequest()
fetchRequest.predicate = NSPredicate(format: "@"SUBQUERY(usersWhoLiked, $user, $user.age > %d)[email protected] != 0",
50))
fetchRequest.sortDescriptors = [NSSortDescriptor(key: #keyPath(Event.name),
ascending: true)]
但是,請注意,sortDescriptors僅適用於獲取請求的實體。而且,如果你根本就沒有進行抓取,例如只是訂購特定用戶的所有事件,那麼Jon Rose的解決方案可能同樣有效或更多。
目前還不清楚你想要訂購什麼。我希望這回答了你的問題。
0
的關係被定義爲一組,這是無序的。您可以將該集合轉換爲數組,然後對數組進行排序:
NSArray* sortedEvents = [user.events.allObjects sortedArrayUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]]]
相關問題
- 1. 核心數據排序對多關係
- 2. 核心數據:按對數排序以多對多的關係
- 3. 核心數據:NSFetchRequest按多對多關係排序
- 4. 核心數據:NSTableView中的排序多對多關係
- 5. 在UITableView中排序核心數據對多關係
- 6. 核心數據在一對多關係中排序
- 7. 核心數據 - 從多對多關係
- 8. 核心數據多對多關係NSPredicate
- 9. 核心數據多對多關係
- 10. Swift核心數據多對多關係
- 11. 多對多關係核心數據
- 12. 核心數據與多對多關係
- 13. 核心數據一對多關係
- 14. 核心數據 - 對很多關係
- 15. 核心數據,一對多關係
- 16. 核心數據對多關係問題
- 17. UITableView和核心數據對多關係
- 18. 核心數據與對多關係/
- 19. NSSortDescriptor根據核心數據對多關係中的項目數排序
- 20. iOS - 核心數據關係。映射表/多對多關係
- 21. SWIFT核心數據關係一對多對自己的實體
- 22. 核心數據關係刪除自定義規則
- 23. 核心一對多關係到多對多關係的數據遷移
- 24. 核心對多對多關係的數據依賴屬性
- 25. 核心數據:對多對多關係的預測
- 26. 核心數據 - 有條件地對來自多對多關係的值進行排序
- 27. 核心數據添加關係至多
- 28. 核心數據NSPredicate與多個關係
- 29. 核心數據中的許多關係
- 30. 1對1關係核心數據iOS