作者ksksBangBang (Bang!)
看板MacDev
标题Re: [问题] CoreData能否从某managedOjbect中fetch?
时间Fri Oct 5 00:14:33 2012
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