NSPredicate遍历关系(StackMob)
我一直在研究苹果的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)的核心数据实体。
关系如下: 用户 一对多 项目 一对多 任务与您所期望的相反的关系。 我想要做的是获取当前login的用户的所有任务。 所以,我的想法是:发送与实体“任务”的获取请求。 如果拥有该任务的项目由login的用户拥有,则获取该任务并显示该任务。 很简单。
我想我应该可以在上面显示的谓词中使用点符号,但是获取请求返回nil。
有关获取请求的其他一切都很好。 如果我将格式string更改为@"project != NULL"
,则会将所有任务返回。
我只是写我的格式string不正确? 向StackMob发送提取请求时,点符号不知何故无效?
一如既往,任何帮助,非常感谢。
请让我知道是否需要更多的信息。 我现在有点太接近了,看清楚了。
获取关系的属性(task.user == X的任务)不被StackMob支持。 但是,看起来您正在尝试为login用户获取给定项目的所有任务。 如果我正确地假设login用户是创build项目和任务的用户,那么将项目模式的权限设置为“Allow to sm_owner”。 然后,您可以根据项目ID(项目IN 1234中的任务)或基于ID的项目获取任务,并抓取所有任务(projectId == 1234和使用任务关系值的项目)。 无论哪种方式,获取该权限将只返回sm_owner ==login用户的结果,因此您不需要设置提取,以便使用用户ID作为filter。 希望有所帮助!
- 在iOS 9.0中,“UIAlertView”已被弃用。 相反,使用UIAlertController和UIAlertControllerStyleAlert的preferredStyle
- 无法将对象添加到NSMutableArray
- 检测文件是否在iCloudDrive Trash中
- 使用Cocoa Lumberjack日志框架立即刷新日志语句,NSLog刷新到控制台的方式
- Swift和CoreData /数据存储
- 目标C的类build模备选scheme
- App认为它在4英寸时运行在3.5英寸的iPhone上
- 为什么self.view.subviews在viewDidLoad中是一个空的数组?
- 没有确认提示的自定义URL方案(Swift)