我一直在搜索Apple的谓词编程指南和SO,试图确定为特定获取请求编写谓词的正确方法。
看来我尝试使用点符号来遍历关系的方式没有受到请求的尊重。
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Task" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"project.user == %@", self.user];
[fetchRequest setPredicate:predicate];
用户、项目和任务都是映射到 BaaS 提供商 (StackMob) 的核心数据实体。
关系如下:User 一对多 Project 一对多 Task正如您所期望的那样,具有反向关系。我想做的是获取当前登录用户的所有任务。所以,我的想法是:发送带有实体“Task”的获取请求。如果拥有该任务的项目由登录用户拥有,则获取该任务并显示它。够简单的。
我想我should能够在上面显示的谓词中使用点符号,但获取请求返回 nil。
关于获取请求的其他一切都很好。如果我将格式字符串更改为@"project != NULL"
,我拿回了所有任务。
我只是错误地编写了格式字符串吗?向 StackMob 发送获取请求时,点表示法是否无效?
一如既往,我们非常感谢任何帮助。
如果需要更多信息,请告诉我。我现在离这个有点太近了,看不清楚。
StackMob 不支持获取关系的属性(project.user == X 的任务)。但是,您似乎正在尝试为登录用户获取给定项目的所有任务。如果我正确地假设登录用户是创建项目和任务的用户,则将项目架构的权限设置为“允许 sm_owner”。然后,您可以根据项目 ID 获取任务(项目 ID 为 1234 的任务),或者根据 ID 获取项目并获取所有任务(项目 ID == 1234 和任务关系的使用值)。无论哪种方式,具有该权限的提取都只会返回 sm_owner == 登录用户的结果,因此您不需要设置提取以使用用户 ID 作为过滤器。希望有帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)