- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我也一直在搜索 Apple 的 Predicate Programming Guide 和 SO,试图确定为特定获取请求编写谓词的正确方法。
请求似乎没有遵守我尝试使用点符号来遍历关系的方式。
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Task" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"project.user == %@", self.user];
[fetchRequest setPredicate:predicate];
用户、项目和任务都是映射到 BaaS 提供程序 (StackMob) 的核心数据实体。
关系如下:用户 一对多 项目 一对多 Task 如您所料,具有反向关系。我想要做的是获取当前登录用户的所有任务。所以,我的想法是:发送一个带有实体“任务”的获取请求。在拥有该任务的项目由登录用户拥有的地方,获取该任务并显示它。很简单。
而且我认为我应该能够在上面显示的谓词中使用点表示法,但获取请求返回 nil。
关于获取请求的其他一切都很好。如果我将格式字符串更改为 @"project != NULL"
,我将恢复所有任务。
我只是错误地编写了我的格式字符串吗?向 StackMob 发送提取请求时,点符号是否无效?
一如既往,非常感谢任何帮助。
如果需要更多信息,请告诉我。我现在离这个有点太近了,看不清楚。
最佳答案
StackMob 不支持获取关系的属性(project.user == X 的任务)。但是,您似乎正在尝试为登录用户获取给定项目的所有任务。如果我假设登录用户是创建项目和任务的用户是正确的,则将项目架构的权限设置为“允许 sm_owner”。然后可以根据项目ID取任务(task where project IN 1234),或者根据项目ID抓取所有任务(project where projectId == 1234,使用tasks关系值)。无论哪种方式,具有该权限的提取将仅返回 sm_owner == 已登录用户的结果,因此您无需设置提取以将用户 ID 用作过滤器。希望有帮助!
关于ios - NSPredicate遍历关系(StackMob),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16110266/
我是一名优秀的程序员,十分优秀!