2011-11-16 68 views
1

我的應用程序使用UIManagedDocument通過Core Data處理其數據。兩個實體之間存在多對多關係:Post和Tag。在UIManagedDocument MOC的子MOC中獲取對象,多對多關係爲空

當我想編輯一篇文章時,我創建了一個臨時NSManagedObjectContext,將它的parentContext設置爲UIManagedDocument的managedObjectContext,並使用objectWithID:方法檢索該文章。

假設這樣的:

  • MOC1是UIManagedDocument的的NSManagedObjectContext
  • MOC2是暫時的NSManagedObjectContext編輯的帖子
  • POST1是MOC1後
  • POST2是MOC2

問題出在這裏:

  • post1.tags返回2個標籤
  • post2.tags返回0標籤

所有POST2特性被適當地檢索,除了對多關係的標籤。

爲什麼post2.tags沒有標籤?

回答

0

我希望我有這個答案,但據我所能確定,這是一個錯誤。在這種情況下,多對一的關係檢索似乎不起作用。坦率地說,看起來有點難以相信這樣會逃脫測試,但我完全無法以任何方式完成這項工作。

+0

是的,我認爲這也是一個錯誤。我沒有時間提交它,很快就會完成。 – Olivier

2

經過進一步測試,我認爲這與臨時與永久物體ID有關;如果我們看到同樣的事情,那麼我猜測MOC1中的多對一關係返回的對象將具有臨時而非永久的ID。

推測在MOC2中,你正在做一些插入來創建對多關係的對象。當你完成插入,並且在保存之前,獲取通過[[moc2 insertedObjects] allObjects]插入的對象數組。使用跟蹤數組將此數組賦給[moc2 obtainPermanentIDsForObjects:error]。然後調用保存在MOC2上。

這似乎適用於我。看起來默認情況下,在MOC2上調用保存實際上並不會在MOC1中創建永久對象ID。

+0

明天我會試試這個。會及時向大家發佈。 – Olivier

+0

經過數週的苦苦掙扎,這才挽救了我的屁股!非常感謝!! –

相關問題