2016-05-09 66 views
1

假設我有EmployeeWorkShift對象具有一對多關係的對象,稱爲shiftsWorkShift有一個startDate財產,標誌着這種轉變何時開始。從過濾關係爲空的核心數據提取對象

我想獲取所有沒有啓動兩個日期之間的工作,即如果Employee有0 WorkShift記錄A和B日期之間startDate的員工,那麼我想包括Employee在我的結果集。

如果我只需要找到員工,其中shifts完全是空的,我相信我可以只使用[email protected] = 0謂語,但我需要根據startDate過濾shifts,然後檢查是否@count = 0,但我不知道如何在謂詞中這樣做。

有什麼建議嗎?

回答

1

我管理基於一些其他職位弄明白談論SUBQUERY

NSPredicate *predicate = [NSPredicate predicateWithFormat: 
    @"SUBQUERY(shifts, $x, %@ <= $x.startDate and $x.startDate <= %@)[email protected] == 0", 
    beginningOfDateRange, endingOfDateRange); 

SUBQUERY函數將有問題的關係(集合)作爲第一個參數。第二個參數只是一個變量定義,表示當我在第三個參數中構建條件時,我將使用$x來引用關係集合中的每個項目。然後,當然,第三個參數是我用來減少集合的過濾器。我正在尋找WorkShift記錄與我的兩個日期之間的startDate ..但我希望所有Employees沒有任何,所以我使用子查詢找到該範圍內的所有WorkShift記錄,然後檢查[email protected] == 0以確保在該範圍內沒有任何。

這種大腦扭曲,但它像一個魅力。