1
我有這三個不相關的實體。我怎樣才能得到一個僱員的工資。我想要的東西是這樣的:
Select C.salary FROM Employee A, Department B, Salaries C Where A.id=B.empid AND B.id=C.deptid AND A.id=12
我需要在覈心數據做同樣的上述操作。
我有這三個不相關的實體。我怎樣才能得到一個僱員的工資。我想要的東西是這樣的:
Select C.salary FROM Employee A, Department B, Salaries C Where A.id=B.empid AND B.id=C.deptid AND A.id=12
我需要在覈心數據做同樣的上述操作。
正如馬丁所說,簡單的方法是建立所需的關係並遍歷它們。
但是,如果您沒有更改模型的權限,則需要在檢索到的內存對象中工作和過濾託管。換句話說,您需要使用正確的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)
謝謝老兄,那就是我現在正在做的事情。我正在尋找替代性能的原因。我們沒有任何可以根據需要手動設置和刪除關係的程序化方法.. –
核心數據是不是數據庫。您應該定義實體之間的關係。然後你的任務就變得微不足道了:'salaries = employee.department.salaries;' –
@MartinR我知道那個傢伙,但問題在於模型的建立方式使得每個實體都是不相關的,我沒有權限編輯它。所以一些我需要使它工作。而且我也知道這是可能的,但不是如何。 –