NSPredicate遍历关系(StackMob)

ger*_*iam 3 objective-c nspredicate nsfetchrequest ios stackmob

我一直在搜索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];
Run Code Online (Sandbox Code Playgroud)

用户,项目和任务都是映射到BaaS提供商(StackMob)的核心数据实体.

关系如下:用户 一对多 项目 一对多 任务与您期望的反向关系.我要做的是获取当前登录用户的所有任务.所以,我的想法是:发送一个带有实体"任务"的获取请求.拥有该任务的项目由登录用户拥有,获取该任务并显示它.很简单.

我想我应该能够在上面显示的谓词中使用点符号,但是获取请求返回nil.

关于获取请求的其他所有内容都很好.如果我将格式字符串更改为@"project != NULL",我将恢复所有任务.

我只是错误地写了我的格式字符串吗?向StackMob发送获取请求时,点符号在某种程度上无效吗?

一如既往,非常感谢任何帮助.

如果需要更多信息,请告诉我.我现在有点太接近这一点,看得很清楚.

小智 6

StackMob不支持获取关系的属性(project.user == X的任务).但是,您似乎正在尝试为登录用户获取给定项目的所有任务.如果我认为登录用户是创建项目和任务的用户是正确的,那么将项目架构的权限设置为"允许sm_owner".然后,您可以根据项目ID(项目IN 1234中的任务)或基于ID的项目获取任务,并获取所有任务(项目中projectId == 1234并使用任务值关系).无论哪种方式,使用该权限提取只会返回sm_owner ==登录用户的结果,因此您无需设置提取,以便使用用户ID作为过滤器.希望有所帮助!