簡體   English   中英

獲取對象是否也會獲取核心數據中的關系對象

[英]Does fetching object also fetches relationship objects in core data

我在核心數據中有一對多的關系b / w對象。 像A == >> B(很多對象)所以A與B對象有一對多的關系。 我的問題是,當我獲取A對象時,B對象是否也被加載到內存中? 如果是,那么當它們被加載? 當我訪問關系?

在大多數情況下,它沒有。 這是一種稱為故障核心數據的機制。 當你要求一個尚未實現的對象(即加載到內存中)時,框架會負責實現場景背后的故障。

故障處理是透明的 - 您不必執行提取來實現故障。 如果在某個階段訪問了故障對象的持久屬性,則Core Data會自動檢索該對象的數據並初始化該對象(有關不會導致錯誤觸發的方法列表,請參閱NSManagedObject類參考)。 此過程通常稱為觸發故障。 如果你向Department對象發送一條消息來獲取它的名字,那么故障就會觸發 - 在這種情況下,Core Data會為你執行一次獲取來檢索所有對象的屬性。

因此在您的示例中,如果您加載A,Core Data將使B實例出錯(即不將它們加載到內存中),當您實際嘗試訪問B時,它會實現故障(即加載到內存中)。

相反,有時您在內存中加載了對象並希望“卸載”它們。 這稱為將物體變成故障。

您可以使用refreshObject:mergeChanges:方法將已實現的對象轉換為錯誤。 如果傳遞NO作為mergeChanges參數,則必須確保該對象的關系沒有更改。 如果存在,然后保存上下文,則會向持久性存儲中引入參照完整性問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM