Core data 特定用例的自引用核心数据模型

Core data 特定用例的自引用核心数据模型,core-data,Core Data,我看过其他帖子,说可以自引用核心数据实体,但我觉得我的用例有点不同,我很难理解如何连接 我有一个人实体,我想跟踪两件事: -用户访问其配置文件的人员实体数组 -查看此用户配置文件的个人实体数组 相反的逻辑让人很难理解 我有用户A,用户B 如果用户A访问用户B,则应建立以下关系: -用户A访问的配置文件显示用户B。 -用户B应该看到用户A访问了他 这对很多人来说都是一种关系,因为只有当你知道你跟随的是谁和谁在跟随你时,事情才会变得有趣- 我是不是让事情变得更复杂了- 我尝试的是: Person E

我看过其他帖子,说可以自引用核心数据实体,但我觉得我的用例有点不同,我很难理解如何连接

我有一个人实体,我想跟踪两件事: -用户访问其配置文件的人员实体数组 -查看此用户配置文件的个人实体数组

相反的逻辑让人很难理解

我有用户A,用户B

如果用户A访问用户B,则应建立以下关系: -用户A访问的配置文件显示用户B。 -用户B应该看到用户A访问了他

这对很多人来说都是一种关系,因为只有当你知道你跟随的是谁和谁在跟随你时,事情才会变得有趣-

我是不是让事情变得更复杂了-

我尝试的是:

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)

您对关系的定义看起来不错。你可以打任何一个电话

[a addVisitedProfilesObject:b];


将b添加到a.visitedProfiles和a添加到b.viewedProfiles。

这不是一个特别复杂的情况。不过,我个人觉得你的用词有点混乱。在我看来,已浏览的个人资料和已浏览的个人资料听起来不像是相反的。取而代之的是viewedProfiles和Viewer呢

尽管如此,无论选择哪个词,请按照您所描述的方式建立关系。如果将B添加到A的查看器,则B的viewedProfiles也将更新


了解最近的视图/访问的副作用需要做一些额外的工作。您可以对查看者/被查看者使用有序关系;这感觉是最简单的事情。或者,您可以添加一个新实体,即访问,该实体会记录查看者、被查看者以及访问的时间/日期。但第二种方法确实更复杂。

谢谢,这种命名约定也让我更容易理解。对,第二种情况是我试图实现的——即跟踪跟踪跟踪的某些元数据,但我去掉了所有代码,只是为了让基本的东西正常工作。另外,我的代码中有一个bug,没有将更改推送到CD上下文。稍后我将添加其他元数据功能。我将把这个标记为已接受。再次感谢您对命名约定的修复,以及验证我的假设,因为我试图与核心数据作过多的斗争:-谢谢,我就是这样设置的。我自己的代码中有一个bug阻止了保存。您对:[link]的回答也非常有用。
[b addViewedProfilesObject:a];