2016-06-07 62 views
0

我正在開發一個使用Core數據的Mac應用程序。我正在使用NSOutlineView和NSTreeController綁定視圖上的數據。用NSTreeController過濾NSOutlineView的孩子

你可以假設我的數據的結構

  • 父項目1個
    • 子項目1
    • 子項2
    • 子項目3
  • 父項目2
    • 子項目4
    • 子項目5

我申請一個fetchPredicate我NSTreeController成功地過濾數據。另一方面,fetchPredicate僅應用於數據的第一級(父項)。

我需要一個方法,我可以將fetchPredicate也應用於子項目。例如,如果我的標準到子項1和兒童項目4相匹配的結果應該是

  • 父件1
    • 子項1
  • 父件2
    • 兒童第4項

任何幫助將不勝感激。

+0

那麼你的問題到底是什麼?您在篩選兒童項目方面遇到困難的問題是什麼? –

+0

感謝您的回覆。正如我在我的問題中提到的,我正在將一個filterPredicate應用於NSTreeController。例如NSPredicate(format:due_on = <%@「,endDate!)但是這個過濾器只適用於父項目而不適用於子項目,我仍然看到一些子項目不符合這個標準。我需要的僅僅是將我的過濾器應用到第二級,再次感謝 – emreoktem

+1

你正在應用一個獲取謂詞,NSTreeController不支持過濾謂詞,NSTreeController獲取頂級對象並使用子關係獲取兒童。如果你想過濾孩子,你必須做一些編程。 – Willeke

回答

0

您正在應用提取謂詞。 NSTreeController不支持過濾謂詞。 NSTreeController使用獲取謂詞來獲取頂層對象並使用子關係來獲取子項。孩子不被提取,並且取詞謂詞不被用於獲取孩子。

解決方案1:實施計算屬性filteredChildren,像這樣的問題:Filtering A Tree Controller並且在此無關答覆中提到:Is it possible to bind an NSTreeController to an NSOutlineViewDataSource?

解決方案2:使用數據源而不是綁定,在上面的回答也有提及。

+0

解決方案1是完美的。謝謝 – emreoktem

相關問題