2013-11-21 60 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值的新实体。 –

相关问题