我正在开发一个我有两个实体的应用,Post
< - >> StreamType
。当我创建帖子时,我分配StreamType
:s,如下所示:
// streamType == one of my default streamTypes
[post addStreamTypesObject:streamType];
我查找具有特定StreamType
的帖子的谓词如下所示:
predicate = [NSPredicate predicateWithFormat:@"ANY streamTypes.type = %@", [NSNumber numberWithInt:self.pageType]];
我不确定为什么会这样。有什么想法吗?
修改
我基本上想要的是获取具有正确Posts
的所有StreamType
。毕竟我的fetchrequest只返回数据库中的1个项目。所以我的tableview可能没什么问题。
编辑3 问题在于我的关系,应该是多对多,而不是一对多。因此它只返回一个帖子项目。
答案 0 :(得分:2)
首先:测试其他代码是否正常。简单地说,删除谓词(注释setPredicate行)。您应该在tableview中看到所有对象。
右?
第二步:检查self.pageType是否设置正确。我没有在你的代码中看到你如何设置self.pageType 测试你的谓词,添加这样的NSLog并检查结果是否正常:
NSLog(@"ANY streamTypes.type = %d", self.pageType);
第三: 据我了解,你有这种情况:
One Post只有一种流类型 一种流类型有多个帖子。
ANY关键字用于您想要的情况,例如,获取至少一次满足特定条件的所有流类型。例如(假设您的帖子上有一个“内容”实例变量,包含帖子的文本)
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY post.content CONTAINS[cd] %@", @"aWord"];
在这种情况下,您将获得所有流类型,其中包含文本中包含“aWord”特定单词的帖子。
你的情况比较简单。我认为你应该简单地使用:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"streamTypes.type = %d", self.pageType];
试着让我知道
答案 1 :(得分:0)