2011-03-30 22 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開發人員帳戶的人員來說,這些鏈接可能會提供,也可能不提供,當然可能會有所更改。