2014-05-22 33 views
0

我爲我的項目使用三個NSManagedObjectContext s(moc)作爲A,B,C(分別爲parent,child1,child2)。當同時使用多個上下文時,NSMangedObject屬性值缺失

  • A(親本)是在專用隊列,只用於保存保存任孩子MOC的保存的
  • B(child1)是在主隊列中,用於更新UI部分後
  • C(的child2)在私人隊列,從服務器響應用於保存/更新數據,核心數據

現在我的問題是,當我試圖加載/填充表從B使用的核心數據獲取的數據,我想屬性的實體。這意味着所有的屬性值變成nil

我認爲會發生的事情是:我使用上下文C保存數據並使用B獲取數據。它是缺少屬性的原因嗎?

+1

顯示相關代碼 – Volker

+0

@ Amit89,C是B的孩子,或者*每個*都有A作爲父親(即它是C-> B-> A或C-> A &B-> A)? – quellish

+0

對於這些隊列上的操作(對託管對象或託管對象上下文的任何訪問),您正在使用'performBlock:'和* not *'performBlockAndWait:',對吧? – quellish

回答

0

我剛剛遇到類似的情況,當試圖從一個子上下文獲取將返回正確數量的對象,但所有的屬性將爲零。在我的情況下,罪魁禍首是我在我的提取請求上調用了

- (void)setPropertiesToFetch:(NSArray *)values 

。一旦我刪除這一行,我得到的屬性填充。我正在提取NSManagedObjects,並且文檔中提到:

此值僅在resultType設置爲NSDictionaryResultType時使用。

所以我認爲它應該被忽略,但實際上它會打破東西。奇怪的是,如果你離開set屬性調用並在根上下文(沒有父項的上下文)中執行獲取,那麼一切正常。所有這些都在iOS 7.1中

+0

在某些版本的Core Data上,實際上會崩潰。 – quellish

+0

謝謝@singebete,但我嘗試以某種方式工作。 – Amit89

相關問題