为了我的目的,他们将全部导入到同一部门(用户已经隐式选择).
显然我不能在两个上下文中建立关系,所以我:
>在importMoc中创建一个部门,然后当我合并更改时,将“导入”部门与“真实”部门合并?
> 2)合并员工,然后获取所有刚刚进口的员工(不知何故!!!)然后设置他们的部门?
> 3)我忽略了一些其他解决方案?
这似乎是一个简单的问题,但出于某种原因(懒惰?疲倦?愚蠢?)我无法弄清楚如何去做!到目前为止,我所尝试的一切似乎都过于复杂和复杂!
提前致谢!
解决方法 如果Department对象已保存到持久性存储,则可以将它们带入另一个托管对象上下文.由于您的对象无论如何都必须存在于同一个持久性存储中(因为不允许跨存储关系),您应该能够简单地将所需的对象提取到importMoc中.例如:
foreach (NSDictionary *record in employeeRecords) { NSManagedobject *employee = [NSEntityDescription insertNewObjectForEntityForname:@"Employee" inManagedobjectContext:importMoc]; // Configure employee however you do that Nsstring *managerID = [record objectForKey:@"someKeyThatUniquelyIDentifIEsTheManager"]; NSFetchRequest *managerFetchRequest = [[NSFetchRequest alloc] init]; [managerFetchRequest setEntity:[NSEntity entityForname:@"Manager" inManagedobjectContext:importMoc]]; [managerFetchRequest setPredicate:[nspredicate predicateWithFormat:@"managerProperty == %@",managerID]]; NSArray *managers = [importMoc executeFetchRequest:managerFetchRequest error:nil]; // Don't be stupID like me and catch the error ;-) [managerFetchRequest release]; if ([managers count] != 1) { // You probably have problems if this happens } [employee setValue:[managers objectAtIndex:0] forKey:@"manager"];}
您也可以只执行一次获取请求以将所有管理器放入importMoc,然后过滤该数组以便每次都找到正确的数组.这可能会更有效率.换句话说,不要做我刚才告诉你的事情:-)
总结以上是内存溢出为你收集整理的cocoa – 在导入核心数据时建立关系?全部内容,希望文章能够帮你解决cocoa – 在导入核心数据时建立关系?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)