2014-12-05 33 views
0

我在數據庫中有兩個實體,分類和子類別。類別可以有多個子類別。的關係是這樣定義的:核心數據,關係消失

類別 - >小類(一對多,有逆,級聯)

Subcategory->類別(一對一,有逆,廢止)

的所有作品,好的,但有時類別 - >子類別關係是空的,子類別 - >類別是好的,這很奇怪。這種情況非常罕見,我無法弄清楚原因。

下面是從控制檯日誌中可以看出類別的該實例具有空小類的關係,但在數據庫的一個子具有相同的類別實例作爲其關係。

我不明白關係的一端如何可以是空的和其他確定的,因爲它們在任何一端被設置時自動連接。


Category: 0x7b6f8020> (entity: Category; id: 0x7b6f6d40 x-coredata://021C3D9A-7A0C-4326-B526-9E9253611C44/Category/p8> ; data: { 
    … other data 
    subcategories =  (
    ); 
}) 

Subcategory: 0x7c8f7770> (entity: Subcategory; id: 0x7c8c91b0 x-coredata://021C3D9A-7A0C-4326-B526-9E9253611C44/Subcategory/p5> ; data: { 
    … other data 
    category = "0x7b6f6d40 x-coredata://021C3D9A-7A0C-4326-B526-9E9253611C44/Category/p8>"; 
}) 
+0

很奇怪。可能會在XCode中添加數據模型的屏幕截圖,以便我們可以幫助查找未正確設置的內容? – RobP 2014-12-05 17:10:49

+0

這兩個對象是否來自同一個託管對象上下文? – 2014-12-05 17:32:18

+0

是的,這兩個對象來自同一個MOC。數據模型是可以的,否則它根本無法工作。我發現一段代碼會改變'performblock'之外的子類實體中的某些屬性,這可能是原因嗎?這發生在一個月內兩次,所以它很難調試,上次發生這種情況我保存了一個數據庫文件,但仍然無法弄清楚。 – 2014-12-05 21:41:59

回答

0

你使用refreshObject:mergeChanges:?該文檔似乎表明,這可能會導致諸如您的問題:

您可以使用refreshObject:mergeChanges:方法將實現的對象變成故障。如果您將NO作爲mergeChanges參數傳遞,則必須確保對該關係沒有任何更改。如果存在,然後保存上下文,則會將引用完整性問題引入持久存儲。

請參閱Apple文檔here

+0

我不使用refreshObject:mergeChanges:在代碼的任何地方。 – 2014-12-05 21:43:11

+0

你使用原始訪問器嗎?或直接修改Category.Subcategories NSSet? – pbasdf 2014-12-06 00:13:11