2011-06-07 76 views
0

我正在創建一個應用程序,該應用程序可以瀏覽多層次的一對多關係。例如,假設CoreDataBooks代碼示例從一個流派列表開始,您單擊一個流派,然後,然後獲取由Apple的代碼示例中看到的作者組織的書籍列表。遍歷與NSFetchedResultsControllers的一對多關係

這是我的問題:蘋果文檔告訴我,我應該使用FetchedResultsController來幫助組織我的書籍列表(除其他原因)。但是,當試圖找出如何從「一種」流派到我的「許多」書籍時,核心數據常見問題解答告訴我們不要使用提取。從常見問題解答:

我有一個從實體A到實體B的一對多關係。如何獲取與實體A的給定實例相關的實體B的實例?

你不知道。更具體地說,不需要明確提取目標實例,只需在實體A的實例上調用適當的鍵值編碼或訪問器方法。

問題當然是我現在有我的一套書中的書,但我希望他們從一個獲取的結果控制器中獲取它們。

在這裏進行的最佳途徑是什麼?我是否應該遵循常見問題解答,如果是這樣,我該如何管理作者將我的書分成若干部分?

或者我使用提取的結果控制器(我懷疑它更好),在這種情況下,我該如何遍歷一對多的關係(因爲Apple的哦 - 如此有用的答案只是「不要」 )?

非常感謝您的幫助。

薩沙

回答

1

你有一個數據模型,看起來大致是這樣的:

Genre{ 
    name: 
    books<-->>Book.genre 
} 

Book{ 
    name: 
    genre<<-->Genre.books 
} 

在你的主表,你運行一個獲取結果控制器到達Genre對象的表。然後,用戶選擇在幕後選擇特定對象的行中的一個。

由於每個Genre對象都有一個books關係指向相關Book對象,你已經自動獲得所有相關圖書的參考對象,因此您不必獲取任何東西。對於您的書籍tableview,您只需在所選的Genre對象的books關係中創建Book對象的排序數組。

將一個核心數據對象圖想象成一串珠串,它們都是在一個網或織物中編織在一起的。珠子是物體,弦是關係。抓取撿起叢中的一個珠子/物體,但是一旦你手中有了這個珠子/物體,那麼你就可以拉動它的繩子/關係來拉出手中與珠子有關的所有珠子/物體。

所以,在大多數情況下,抓取只用於查找起始對象,然後通過遍歷關係來查找大多數其他對象。

這就是爲什麼Apple文檔說你不需要第二次獲取。