【问题标题】:How to get data from unrelated entities using Core Data?如何使用 Core Data 从不相关的实体中获取数据?
【发布时间】:2014-07-02 06:36:48
【问题描述】:

我有这三个不相关的实体。我怎样才能拿到员工的工资。我想要这样的东西:

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

我需要在核心数据中做同样的操作。

【问题讨论】:

  • Core Data 不是数据库。您应该定义实体之间的关系。那么你的任务就变得微不足道了:salaries = employee.department.salaries;
  • @MartinR 我知道那个家伙,但是问题在于模型的构建方式使得每个实体都不相关并且我没有编辑权限它。所以我需要如何让它工作。而且我也开始知道这是可能的,但不是如何。

标签: ios objective-c core-data nspredicate nsfetchrequest


【解决方案1】:

正如 Martin 所建议的,简单的方法是设置所需的关系并遍历它们。

但是,如果您没有更改模型的权限,则需要在检索到后在您拥有的内存对象中进行工作和过滤管理。也就是说,您需要将NSFetchRequests 设置为正确的NSPredicates。

例如,检索给定员工的部门。

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

}

其他部分留作练习 ;)

【讨论】:

  • 谢谢老兄,这就是我现在正在做的事情。出于性能原因,我正在寻找替代方案。难道我们没有任何可以根据需要手动设置和删除关系的编程方法..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-14
  • 1970-01-01
相关资源
最近更新 更多