2011-03-30 78 views
2

此问题可能在此之前已经提出,但我不确定我是否理解了解决方案。 Objective-C的核心数据iOS中存在这个问题。核心数据建模:多对多桥接

我打算建立一个类似twitter的用户关注关系,一个用户可以关注很多,并且可以跟随很多关系。下面的本身属性,如createTime,挂起和水平 - 这意味着,我不仅可以让用户有一个像跟随双向关系,并遵循,如:

用户< < - >>用户

,但添加一个以上的实体,以下关系如下并遵循。

用户< - >>继< < - >用户

这里有两个问题:

  1. 这是最好的做法呢?

  2. 如果是这样,如何编写[aUser valueForKeyPath:...];取回他/她的追随者或朋友(被追踪)。

回答

2

这是最佳做法吗?

我不认为这个问题属于“已确立最佳实践的情况”类别,但它似乎是一个合理的解决方案。

如果是这样,如何编写[aUser valueForKeyPath:...];取回他/她的追随者或朋友(被追踪)。

假设Following有一个follower财产做以下的人,和leader财产的人被人跟踪。另外,UserFollowing与关系具有leads属性,该关系与跟随用户的人关联,follows属性与Following关系与用户关注的人关系。最后,User也有一个name属性。

鉴于这一切,让aUser的追随者的名字,你可以说:

的NSSet *追随者= [aUser valueForKeyPath:@ “leads.follower.name”];

,并受到人们的名字aUser如下:

的NSSet *领导= [aUser valueForKeyPath:@ “follows.leader.name”];

起初你似乎有点奇怪,因为每条路径中的最后两个键都是单数形式,所以你会从这些关键路径回退。但是,由于leads属性返回一组Following对象,因此leads.follower将返回一个包含每个对象的用户的集合,并且leads.follower.name将返回一个包含这些对象的用户名称的集合。

0

我发现了一个很好的例子,你在这里试图完成,并认为我会分享。在“多对多关系”标题下检查here。您应该找到一个使用Person实体和FriendInfo实体的示例,该实体更详细地描述您正在使用的模式。

注意:该链接指向Apple核心数据编程指南的“关系和获取属性”部分,对于那些没有Apple开发人员帐户的人员来说,这些链接可能会提供,也可能不提供,当然可能会有所更改。