2011-02-14 82 views
0

我有以下數據模型:核心數據繼承和關係

實體用戶,從實體Contact繼承。

聯繫人與實體ContactInfo具有一對一的關係。

用戶與聯繫人有一對多的關係。

ContactInfo與Contact和Contact的關係反過來與User有反向關係。

我創建一個的ContactInfo對象爲用戶:

 ContactInfo *moInfo = [self createContactInfoManagedObject]; 
     moInfo.contact = userMO; 
     userMO.contactInfo = moInfo; 

其中createContactInfoManagedObject返回類型的ContactInfo的對象。 我就行獲得以下異常

 moInfo.contact = userMO; 


Unacceptable type of value for to-one relationship: property = "contact"; desired type = Contact; given type = NSManagedObject; value = <NSManagedObject: 0x3b2850> (entity: User; id: 0x3d4fa0 <x-coredata://4889CBE0-094B-49DB-B525-C87F7CD1AA68/User/p1> ; data: { 
    contacts =  (
     "0x3d4fa0 <x-coredata://4889CBE0-094B-49DB-B525-C87F7CD1AA68/User/p1>" 
    ); 
    user = "0x3d4fa0 <x-coredata://4889CBE0-094B-49DB-B525-C87F7CD1AA68/User/p1>"; 
    contactInfo = "0x3ebdc0 <x-coredata:///VCard/t128311BC-4B82-45CF-B87C-9AD38CBC89163>"; 
}). 

我的問題是什麼是錯在這裏? 當我嘗試將用戶實體指定給聯繫人關係時,我認爲繼承存在問題。請指教! 謝謝

回答

0

試投對象:

ContactInfo *moInfo =(ContactInfo*) [self createContactInfoManagedObject]; 
+0

createContactInfoManagedObject返回一個ContactInfo對象,轉換不會有太大的變化 – 2011-02-14 18:44:06

1

哪裏是你的userMO對象來自哪裏?

錯誤消息表明它是NSManagedObject的一個實例,但它期望的是Contact的實例。

+0

錯誤提到`property =「contact」`的問題,它被分配了一個NSManagedObject,雖然它期望Contact對象,但是用戶派生自Contact,所以我無法理解錯誤來自哪裏。 – 2011-02-14 18:43:12