2014-04-30 66 views
0

我有這個型號的情況 -NSPredicate與孩子的關係實體屬性

  1. Group實體是一對一的關係與Event實體,稱爲latestEvent
  2. Event實體有一個名爲'WeddingEvent'的子實體,它是許多兒童事件之一。
  3. WeddingEvent是誰擁有一個名爲present
  4. 我試圖篩選Group不被取出,如果latestEvent是一種「WeddingEvent」財產的唯一一個。

既然我無法通過類名或獲取的entityName我想:

NSPredicate *LatestEventValidity = [NSPredicate predicateWithFormat:@"latestEvent.present != nil"]; 

NSPredicate *LatestEventValidity = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary * bindings) { 
     OOVGroup *group = evaluatedObject; 
     return [group.latestEvent respondsToSelector:@selector(setPresent:)]; 
    }]; 

但他們人失敗了。

這裏有什麼幫助嗎?

回答

2

第一個謂詞不起作用,因爲並非所有Event對象都響應「當前」 選擇器。第二個謂詞不起作用,因爲您不能在Core Data提取請求中使用基於塊的謂詞(或任何基於Objective-C的謂詞)。

唯一的解決方案可能是爲您的「事件」實體添加(字符串或整數)「type」屬性,以便您可以使用謂詞"lastEvent.type != 'Wedding'"進行過濾。

+0

感謝您澄清爲什麼我的嘗試不工作。你的想法是好的,但我有遺留問題,因爲許多用戶已經使用這個應用程序,我想避免遷移。我所做的就是將當前屬性移動到由輕量級遷移支持的父Event實體。謝謝 – shannoga

相關問題