假設我有一個層次結構的實體,Parent
是根實體,Child
是Parent
的子類。我想設置一個NSArrayController
以僅提取Parent
的實體,但不提取Child
。提取核心數據實體,但不提取子實體
如果您將Interface Builder中的陣列控制器的實體名稱設置爲Parent
,則它將獲取所有Parent
和Child
實體。我本來試圖在Interface Builder設置陣列控制器的獲取謂語:
entity.name == "Parent"
這個工作對一個XML存儲,但是當我切換到一個SQLite存儲,它不再工作。我得到以下錯誤:
keypath entity.name not found in entity <NSSQLEntity xxx>
由於周圍的工作,我在我的awakeFromNib
建立一個過濾謂詞(與上述相同entity.name
謂語)僅過濾父實體。顯然,謂詞在實體處於內存中時是有效的,但不能在SQL支持的謂詞謂詞中使用它。
有沒有辦法只提取Parent
實體,但不是Child
實體使用與SQLite存儲一起使用的提取謂詞?使用過濾器謂詞來拉入實體時,看起來很浪費。
除了上面Dave Dribin的回答之外,還要確保將clearsFilterPredicateOnInsertion設置爲NO,以便在您插入或刪除某些內容時您的過濾器不會被清除(您可以在代碼或IB中執行此操作) 。 – StevenO 2014-02-28 15:59:38