ios – 获取一对多关系数据的核心数据

ios – 获取一对多关系数据的核心数据,第1张

概述我已经四处寻找,但我仍然不清楚我希望有人为我澄清的各种概念. 在考虑某种用户ID的同时尝试保存到Exercise / Routine实体时,我的困惑和头痛就出现了. 为了理解和阅读核心数据,我设置核心数据的方式,它应该工作,能够拉动和保存信息到常规和练习,同时尊重他们正在使用的用户.如果我错了,有人可以纠正我吗? 我想我必须做一个类似的查询(用SQL术语) INSERT INTO Routine 我已经四处寻找,但我仍然不清楚我希望有人为我澄清的各种概念.

在考虑某种用户ID的同时尝试保存到Exercise / Routine实体时,我的困惑和头痛就出现了.

为了理解和阅读核心数据,我设置核心数据的方式,它应该工作,能够拉动和保存信息到常规和练习,同时尊重他们正在使用的用户.如果我错了,有人可以纠正我吗?

我想我必须做一个类似的查询(用sql术语)

INSERT INTO Routine (Values) WHERE Routine.userID = user.usersExercise

那是对的吗?如果这是正确的.现在的问题是我不知道如何在coreData代码中建立这两个实体的内连接,以便生成这样的查询.

任何帮助都非常感谢!

解决方法 是的,您需要使用nspredicate来获取与特定用户相关的数据.如果您正在填充UICollection视图,那么我建议您也阅读NSFetchedResultsController.

NSFetchRequest *fetchRequestItems = [[NSFetchRequest alloc] init];NSEntityDescription *entityItem = [NSEntityDescription entityForname:@"Routine" inManagedobjectContext:self.managedobjectContext];[fetchRequestItems setEntity:entityItem];User* myUser = //Code for getting current user out of data store based on some paramator[fetchRequestItems setPredicate:[nspredicate predicateWithFormat:@"userID == %@",myUser]];//Sort by last edit orderedNSArray *sortDescriptors = [NSArray arrayWithObjects:nil];[fetchRequestItems setSortDescriptors:sortDescriptors];NSArray* Routines = [managedobjectContext executeFetchRequest:fetchRequest error:&error];

这里需要注意的是,您需要在Routine / Exercise对象上设置反向关系,以与谓词中的当前用户进行比较.对于我认为是反向关系的userID你有哪些?

所以从评论中我没有设置反比关系所以这里是一个粗略的例子.

在您的商店中制作新用户时,您会得到这样的信号:

User *thisUser = [NSEntityDescription insertNewObjectForEntityForname:@"User" inManagedobjectContext:self.managedobjectContext];thisUser.eMail = emailAddress.text;//And any other paras you might have

然后在为该用户创建例程时,您将执行以下 *** 作:

Routine *newRoutine = [NSEntityDescription insertNewObjectForEntityForname:@"Routine" inManagedobjectContext:managedobjectContext];newRoutine.userID = thisUser;

然后确保保存托管对象以将更改写入数据存储.然后,它将例程侧的2个对象链接起来,不要忘记在用户端链接它以获得严格的反向关系.

为了让用户完全像我上面提到的那样:

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];NSEntityDescription *entity = [NSEntityDescription entityForname:@"User" inManagedobjectContext:managedobjectContext];[fetchRequest setEntity:entity];NSError* error;NSArray* Users = [managedobjectContext executeFetchRequest:fetchRequest error:&error];

如果你有1个用户,那么它是数组中的第一个元素,如果你有很多用户,那么使用谓词根据你的FB ID找到一个.

总结

以上是内存溢出为你收集整理的ios – 获取一对多关系数据的核心数据全部内容,希望文章能够帮你解决ios – 获取一对多关系数据的核心数据所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/web/1008188.html

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

发表评论

登录后才能评论

评论列表(0条)

保存