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。 希望有所帮助!