2015-04-02 89 views
1

我實際上有一個名爲顯示的核心數據實體,並且對於每個節目,我都有一個名爲Schedule的關係船,它包含一個名爲schedule的屬性,它是一個數組。NSPredicate計數關係屬性

我想要做的是創建一個Predicate,用於檢查給定節目的時間表是否有多個項目。

這樣做,我試過兩種解決方案:

  1. NSPredicate * predicate = [NSPredicate predicateWithFormat:@"schedule.schedules > 1];

  2. NSPredicate * predicate = [NSPredicate predicateWithFormat:@"[email protected] > 1];

但他們都不是可行的。

注意:schedules屬性是作爲Transformable存儲在我的Core Data中,並聲明爲一個id變量。

回答

2

可變形屬性存儲爲二進制數據,直到容器實體加載到內存中才會解壓縮。因此,您不能在提取中使用任何基於可變形屬性的謂詞。它只會對篩選結果進行篩選。

便宜的解決方案是存儲一個簡單的整數屬性與計數和使用。

更好的解決方案可能會添加/更改您的實體,因此您使用關係而不是可變形。

+0

感謝您的答案,如果我明白,沒有辦法做到這一點,而不會改變核心數據模型? – Ali 2015-04-02 12:54:54

+0

是的,您將需要以某種方式更改模型來解決您的問題 – Wain 2015-04-02 13:02:29

0

你試過這個嗎?

NSPredicate * predicate = [NSPredicate predicateWithFormat:@"@count.schedule.schedules > 1]; 
+0

對不起,但它不起作用:由於未捕獲的異常「NSInvalidArgumentException」,終止應用程序,原因:'格式錯誤的keypath:@ count.schedule.schedules' – Ali 2015-04-02 14:45:39

+0

對不起,我沒有測試它。我正在使用'@avg'。在我的代碼中,我認爲它將與'@count'一起工作。 – 2015-04-02 14:54:36

+0

只是想知道'schedule。@ count.schedules> 1',還沒有試過 – 2015-04-02 14:56:52