cocoa – 在导入核心数据时建立关系?

cocoa – 在导入核心数据时建立关系?,第1张

概述我有一个名为importMoc的内存托管对象上下文,用于导入记录(例如员工).我已经解析了一个文件并在importMoc中设置了雇员对象,但有一个非常重要的例外.用户确认他们想要处理%d名员工但我无法弄清楚如何或何时设置员工的“父母”关系(例如设置他们的部门). 为了我的目的,他们将全部导入到同一部门(用户已经隐式选择). 显然我不能在两个上下文中建立关系,所以我: >在importMoc中创建一 我有一个名为importMoc的内存托管对象上下文,用于导入记录(例如员工).我已经解析了一个文件并在importMoc中设置了雇员对象,但有一个非常重要的例外.用户确认他们想要处理%d名员工但我无法弄清楚如何或何时设置员工的“父母”关系(例如设置他们的部门).

为了我的目的,他们将全部导入到同一部门(用户已经隐式选择).

显然我不能在两个上下文中建立关系,所以我:

>在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 – 在导入核心数据时建立关系?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1016269.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存