0

實體B(書)與實體D(描述)具有一對多的關係。這個想法是,一本書對不同的語言有不同的描述。如何使用特定的託管對象來構造排序描述符?

我希望用他們的標題(D.title)對於給定的語言(D.languageID)圖書排序

若B有一個一對一關係d,我會做這樣的事情:

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"d.title" ascending:YES]; 

當然,您可以說,該模型並不妨礙書籍具有多個具有相同語言ID的描述。但在這種情況下,任何(例如第一個)描述對我都可以。或者我可以在之前獲取所需的描述對象,但是如何在排序中使用它?

我的模型錯了嗎?這種情況下最好的解決方案是什麼?

回答

0

您不能通過一對多的方式進行排序,因爲您已經意識到了這一點。執行此操作的「最簡潔」方式是實現自己的排序,在獲取圖書實體後,您可以在內存中執行。一旦它在內存中,你可以通過一種方便的方法來排序,而不僅僅是數據。

例如,您可以在Book子類中創建一個名爲-localTitle的方法,該方法從正確的描述中返回適當的標題。從那裏你可以排序localTitle

基本上是:

  1. 您可以創建一個NSFetchedResultsController跟蹤更改。
  2. 當檢測到改變你重新創建一個由localTitle
  3. 整理你告訴你的表格視圖重載
  4. 你的表視圖滋生於陣列,而不是NSFetchedResultsController的數組。

你可以取消NSFetchedResultsController,但會變得更復雜一點。