我已经看到其他帖子可以自引用核心数据实体,但我觉得我的用例有点不同,我很难理解如何连接。
我有一个Person实体,我想跟踪两件事:
- 一组Person实体,其用户“访问过”的配置文件
- 已查看“此”用户个人资料的人员实体数组
逆逻辑使得难以理解。
我有用户A,用户B。
如果用户A访问用户B,则应设置以下关系:
- 用户A的访问个人资料显示用户B.
- 用户B应该看到用户A访问了他。
这是To-Many关系,因为只有当你知道你跟随谁以及谁跟着你时,事情才会“有趣”......: - )
我是否比这更复杂? : - (
我尝试了什么:
Person Entity
-visitedProfiles : inverse is viewedProfiles (To-Many relationship)
-viewedProfiles : inverse is visitedProfiles (To-Many relationship)
Result:
User A --> User B (user A visists user B)
User A sees User B in BOTH (visitedProfiles and viewedProfiles) relationship.
Side-effect:
Also, regardless of how many profiles I visit, "visitedProfiles" and "viewedProfiles" always has only 1 item in the array (ie. the last profile I visited)
答案 0 :(得分:0)
您对关系的定义看起来不错。你可以打电话给
[a addVisitedProfilesObject:b];
或
[b addViewedProfilesObject:a];
将b
添加到a.visitedProfiles
和 a
添加到b.viewedProfiles
。
答案 1 :(得分:0)
这不是一个特别复杂的案例。不过,我个人觉得你的选择有点令人困惑。 “ViewedProfiles”和“visitedProfiles”对我来说听起来并不像对方。那么“viewProfiles”和“观众”呢?
尽管选择了单词,但是按照您的描述设置关系。如果您将B添加到“A的观看者”中,那么B的“ViewedProfiles”也将更新。
了解最近的观看/访问的副作用需要额外的工作。您可以为查看者/查看者使用有序关系;感觉这是最简单的事情。或者您可以添加一个新实体,即访问,它会记录查看者,查看者以及访问的时间/日期。但第二种方法确实更复杂。