Re: [問題] CoreData能否從某managedOjbect中fetch?
Predicate的順序很重要!
盡量把可以刪去最多物件的條件擺在最前面
假設你要找employee的name是bill或nick, 而且是XXX orgnization
那predicate的順序應該是(ognization == XXX AND name IN {'bill', 'nick'})
詳情可參考WWDC 2012 Session 214
Optimizing Your Predicate
另一種情形
如果你只是要orgnization的所有empolyee 不做進一步搜尋
那直接用orgnization.employees就好了
※ 引述《xareelee (XareeLee)》之銘言:
: 我有一個關於Core Data fetch資料的問題
: 假如有一個Entity叫Orgnization,另外一個Entity叫Employee
: 然後 Orgnization 有一個 relationship 叫 employees 指向-> Employee
: Employee 有一個 relationship 叫 orgnization 指向-> Orgnization
: 兩者互為Inverse
: 然後在iOS的Table View下 用FetchRequest設定其entity的name為 @"Orgnization"
: 這樣就可以list 出所有的 orgnizations。
: 問題是當我想點選其中一個 orgnization 時,想要看裡面有哪些員工。
: 一般的作法是 push 一個新的 table view之後,
: 重設一個FetchRequest找entity的name為 @"Employee"的,
: 並設定其Predicate要它的attribute(orgnization)為 之前所點選的那個orgnization。
: 當Employee的資料大量增加的時候,這種fetch方式會變得很沒效率。
: 例如有10,000筆Orgnization資料 1,000,000筆Employee資料
: 但是平均一個Orgnization 只有100個employees。
: 所以fetch整個Employee table會很沒效率 在一開始限縮某orgnizatoin.employees較好
: 有什麼辦法可以做一個fetchResultsController 要找Employee
: 但是fetch範圍一開始就限縮為某orgnization.employees的資料嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 199.2.242.199
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
MacDev 近期熱門文章
PTT數位生活區 即時熱門文章