2014-07-02 46 views
1

enter image description here如何使用核心數據從無關實體獲取數據?

我有這三個不相關的實體。我怎樣才能得到一個僱員的工資。我想要的東西是這樣的:

Select C.salary FROM Employee A, Department B, Salaries C Where A.id=B.empid AND B.id=C.deptid AND A.id=12 

我需要在覈心數據做同樣的上述操作。

+0

核心數據是不是數據庫。您應該定義實體之間的關係。然後你的任務就變得微不足道了:'salaries = employee.department.salaries;' –

+0

@MartinR我知道那個傢伙,但問題在於模型的建立方式使得每個實體都是不相關的,我沒有權限編輯它。所以一些我需要使它工作。而且我也知道這是可能的,但不是如何。 –

回答

0

正如馬丁所說,簡單的方法是建立所需的關係並遍歷它們。

但是,如果您沒有更改模型的權限,則需要在檢索到的內存對象中工作和過濾託管。換句話說,您需要使用正確的NSPredicate s來設置NSFetchRequest

例如,檢索給定員工的部門。

NSFetchRequest * request = [NSFetchRequest fetchRequestWithEntityName:@"Department"]; 
request.predicate = [NSPredicate predicateWithFormat:@"empid", @(12)]; 

NSError *error = nil; 
NSArray *departments = [moc executeFetchRequest:request error:&error]; 
if(departments) { 
    // do a NSLog for departments here to see what you have 
    // here you can access deptid for each department you retrieve 
    // and with that value run another request against Salaries 
    // e.g. NSManagedObject* department = [departments lastObject]; 
    //  NSNumber* deptid = [department valueForKey:@"deptid"] 
} else { 
    // handle error here 

} 

其他部分被留下作爲excersise)

+0

謝謝老兄,那就是我現在正在做的事情。我正在尋找替代性能的原因。我們沒有任何可以根據需要手動設置和刪除關係的程序化方法.. –