2010-04-23 42 views
0

很抱歉的長期問題,但我認爲它需要一些背景:S如何重新獲取相對評分從實體在CoreData一個子集

我在CoreData以下模型:

Model http://mikeholman.org/model.png

訪客可以在其分數關係中擁有任意數量的分數。 A分數最多可以有兩位賓客關係。

對於每一對訪客實體,我的模型都有一個Score實體,其中包含一個值,表示他們與另一個實體的相處程度。

在我的界面,我希望用戶能夠從列表中選擇任何客戶,然後查看所有其他客人的第二列表,並與最初選擇的客戶,如每個那些客人的相關聯的得分所以:

alt text http://mikeholman.org/interface.png

擷取針對第一表中的所有客人的陣列(TV1)是很簡單的。目前,第二個表格,我用下面的謂詞過濾這個數組獲取所有其他客人:

[NSPredicate predicateWithFormat: 
    [NSString stringWithFormat:@"not displayName == '%@'", 
     [[allGuests objectAtIndex:[tv1 selectedRow]] valueForKey:@"displayName"]]]; 

哪些工作正常,但我的問題是知道如何顯示正確的Score.value。我覺得我應該使用選定的Guest.scores的關係填充第二個tableview,但我不知道如何做到這一點。任何指針都會受到歡迎 - 謝謝!

回答

0

我終於明白了我自己的想法。這就是我最終這樣做的結果:

  1. 保留對第一個tableview中所選訪客實體的引用。
  2. 使用請求所有從與NSPredicate過濾ManagedObjectContext分數對象:

    @ 「ANY guests.displayName =%@」,[guestA的displayName]

  3. 使用返回的分數對象來檢索值

  4. 檢索賓客用於從每個單獨的分數對象(3),與另一NSPredicate過濾:

    @ 「NOT的displayName =%@」,[guestA的displayName]

  5. 生成的篩選NSMutableSet必須包含通過當前Score與第一個選定訪客相關聯的Guest,因爲Score.guests關係最多具有2個Guest對象。因此,排除已知選定的訪客會給出所需的答案。

相關問題