2013-11-21 61 views
0

我有一個關於Coredata實體關係的問題。一個實體能否與另一個實體有多重關係?我有以下的JSON:一個實體能否與另一個實體有多重關係?

{ 
"user": { 
    "user_id": "192837190283", 
    "email": "[email protected]", 
    "first_name": "Tim", 
    "last_name": "Cook", 
    "home_address": { 
     "street": "Downing Street", 
     "number": "11", 
     "city": "London", 
     "state": "Greater London", 
     "country": "United Kingdom", 
     "zip": "12323423", 
     "location": { 
      "latitude": 3.1, 
      "longitude": 3.2 
     } 
    }, 
    "work_address": { 
     "street": "Amphitheatre Parkway", 
     "number": "1600", 
     "city": "Mountain View", 
     "state": "California", 
     "country": "United States", 
     "zip": "94043", 
     "location": { 
      "latitude": 3.1, 
      "longitude": 3.2 
     } 
    } 
} 
} 

我有如下模型Coredata:

enter image description here 不過,當我解析JSON,它仍然只保存一個地址。我在做關係錯了嗎?請建議。提前致謝。

回答

0

這是一個很奇怪的模型。首先,閱讀我之前關於如何在覈心數據中創建父子關係的答案。

Setting up a parent-child relationship in Core Data

然後,你的模型,我會改變一點點。特別是,我會有一個User,AddressLocation像你一樣。

用戶將通過名爲addresses的關係擁有一個或多個地址。地址將通過稱爲location的一對一關係具有位置。

最重要的是,刪除homeUserworkUser關係並添加一個布爾屬性(例如isWorkAddress),讓您指定地址是家庭還是工作地址​​。該屬性將被添加到Address實體中。在解析JSON時,您將以正確的方式設置屬性。

它適合你嗎?

+0

好吧,在我工作的項目中,json有數組對象的地方,在那些我已經習慣了很多關係的地方,但是在我共享的json中,地址不是數組,而是獨立的實體。所以,我不確定(儘管它是在我心中)創建從用戶到地址的多對多關係。我的問題是,我沒有手動解析json,但它是自動完成的(我修改了JAGPropertyConverter lib以支持NSManagedObject),並在該庫中NSDictionary被轉換爲NSManagedObject,它必須匹配json中的確切屬性。 – Anand

+0

和isWorkAddress或isHomeAddress在json中找不到,我無法單獨設置它。 – Anand

+0

@Joy但是該屬性必須在模型上設置。顯然你不能在你的JSON中找到它。 Yuo解析JSON,驗證JSON元素是工作地址​​還是家庭地址,根據解析來插入具有true或false值的新實體。 –

相關問題