2014-12-29 59 views
2

這是我與工作模式: CourseProgram <--->> Student --->> Grades如何火故障的託管對象的關係

當我從核心數據讀取我的課程計劃管理的對象,它正常,但成績返回學生的關係故障。

我知道核心數據返回關係故障以減少開銷。根據Apple documentation,我可以使用setReturnsObjectsAsFaults:強制Core Data返回管理對象而不是故障。

我試過了,但沒有奏效。每當我爲課程程序執行獲取請求時,我都無法將Grades作爲託管對象獲取。我如何爲一段關係開火?

這是我使用來獲取課程計劃對象

// Fetch from persistent data store 
NSManagedObjectContext *managedObjectContext = [self managedObjectContext]; 

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"CoursePrograms"]; 
[fetchRequest setReturnsObjectsAsFaults:YES]; 

NSArray *coursePrograms = [managedObjectContext executeFetchRequest:fetchRequest error:nil]; 
return coursePrograms; 
+0

你爲什麼想要?你可以顯示「不起作用」的代碼嗎? – jrturton

+0

@jrturton更新了我的代碼 – Scott

+0

好的,爲什麼你想這樣做?根據您的對象圖,預取所有關係可以將每個對象一次讀入內存 – jrturton

回答

0

我不認爲你需要擔心回來斷層的關係的代碼。只需通過您獲得的對象的關係來訪問它們,並且故障將被觸發(轉換爲完整對象)給您。

如果您有一系列課程計劃從您的獲取請求中返回,您可以遍歷students,然後遍歷每個學生的成績。如果它們被誤認爲是錯誤,它們不會有什麼區別,你仍然會得到這些數據。

如果您有興趣,我已經寫過關於錯誤的常見誤解here

+0

這是錯誤的。現在我正在測試一個訪問關係錯誤的應用程序,它什麼都不做。他們不會開火。 – CommaToast

+0

訪問故障什麼都不做,訪問相關對象的_properties_會觸發故障。重點是,你不應該在意。錯誤發生的原因是,它永遠不會停止你看到你想要的數據。 – jrturton

相關問題