2014-10-05 35 views
0

,我有以下數據模型:NSPredicate格式檢查空路徑

人 - (一對多) - >任務 - (OptionalOneToOne) - >完成

,我需要一個謂詞返回我的人沒有不完整的任務和另一個相反。如果有一個完成實體關聯,並且如果該引用爲零,則任務完成。 我很想用ALL task.completion = nilNONE task.completion = nil,但這是一個錯誤,因爲核心數據框架將所有內容都包含在數組或集合中,並且它們不能包含nils列表,所以真正解決這個問題的唯一方法是使用SUBQUERY並且這超出了我的舒適程度區。 另外,我找不到NSPredicate中的SUBQUERY表達式的例子,但我知道答案就在那裏,如果這對於任何人來說都是微不足道的,請幫助我打破這個僵局。

在此先感謝

+0

'task.completion.count == 0',也許?或者,'task.completion [SIZE] == 0'。 – duci9y 2014-10-05 12:47:25

+0

完成是OneToOne關係,它是一個對象而不是集合。 – 2014-10-05 12:56:29

+0

一對一,你說? 'task.completion == nil'會做。核心數據僅包含一對多或多對多關係。而不是數組。 – duci9y 2014-10-05 12:57:55

回答

1

像這樣子查詢謂詞應該工作

SUBQUERY(tasks, $t, $t.completed == nil)[email protected] == 0 

找到所有的人都沒有未完成的任務。

+0

而且,對於所有不完整任務的人來說,它轉換爲SUBQUERY(任務,$ t,$ t.completed == nil)> 0。完美,這正是我所期待的,謝謝我的朋友。 – 2014-10-05 19:58:41