一个实体可以与另一个实体有多个关系吗?
Posted
技术标签:
【中文标题】一个实体可以与另一个实体有多个关系吗?【英文标题】:Can one entity have multiple relations with another entity? 【发布时间】:2013-11-21 09:27:20 【问题描述】:我有一个关于 Coredata 实体关系的问题要问。一个实体是否可以与另一个实体有多个关系。我有以下 json:
"user":
"user_id": "192837190283",
"email": "ceo@me.com",
"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 中有以下模型:
尽管如此,当我解析 json 时,它仍然只保存一个地址。我在人际关系上做错了吗?请建议。提前致谢。
【问题讨论】:
【参考方案1】:这是一个非常奇怪的模型。首先,阅读我之前关于如何在 Core Data 中创建父子关系的回答。
Setting up a parent-child relationship in Core Data
然后,关于你的模型,我会稍微修改一下。特别是,我会像你一样拥有User
、Address
和Location
。
用户将通过称为addresses
的关系拥有一个或多个地址。地址将通过称为location
的一对一关系具有位置。
最重要的是,删除homeUser
和workUser
关系并添加一个布尔属性(例如isWorkAddress
),让您指定地址是家庭地址还是工作地址。此属性将添加到Address
实体。解析 JSON 时,会以正确的方式设置属性。
它对你有用吗?
【讨论】:
嗯,在我正在工作的项目中,有些地方json有数组对象,在那些地方我习惯了很多关系但是在我共享的json中,地址不是数组而是单独的实体。所以,我不确定(尽管在我的脑海中)创建从用户到地址的多对多关系。我的问题是我没有手动解析 json,而是自动完成(我修改了 JAGPropertyConverter 库以支持 NSManagedObject),并且在该库中,当 NSDictionary 转换为 NSManagedObject 时,它必须与 json 中的确切属性匹配。 并且在json中找不到isWorkAddress或isHomeAddress,我无法单独设置。 @Joy 但是必须在模型上设置该属性。显然,您无法在 JSON 中找到它。 Yuo 解析 JSON,验证 JSON 元素是工作地址还是家庭地址,根据解析插入一个具有真或假值的新实体。 我想,别无选择,所以,我会像你说的那样尝试。但是如果在json“address_type”中有一个额外的字段并将所有地址放入数组中,那就更好了。以上是关于一个实体可以与另一个实体有多个关系吗?的主要内容,如果未能解决你的问题,请参考以下文章