NSPredicate/TableView 只显示一项,为啥?

Posted

技术标签:

【中文标题】NSPredicate/TableView 只显示一项,为啥?【英文标题】:NSPredicate/TableView only displays one item, why?NSPredicate/TableView 只显示一项,为什么? 【发布时间】:2013-04-29 08:13:26 【问题描述】:

我正在开发一个应用程序,其中有两个实体 Post > StreamType。当我创建帖子时,我会像这样分配StreamType:s:

// streamType == one of my default streamTypes
[post addStreamTypesObject:streamType];

我查找具有特定StreamType 的帖子的谓词如下所示:

predicate = [NSPredicate predicateWithFormat:@"ANY streamTypes.type = %@", [NSNumber numberWithInt:self.pageType]];

我不确定为什么会发生这种情况。有什么想法吗?

编辑

我基本上想要的是获取所有具有正确StreamTypePosts。毕竟我的 fetchrequest 似乎只从数据库中返回 1 项。所以我的表格视图可能没有问题。

编辑 3 问题出在我的关系上,应该是多对多,而不是一对多。因此它只返回了一个 Post 项目。

【问题讨论】:

添加更多代码!您如何/在哪里打印该日志?你怎么知道在 fetch 之后返回了多个对象? ecc ecc... 此外,粘贴您的 numberOfRowInSection: 和 cellForRowAtIndexPath: 方法 我已经添加了一些说明。 在这种情况下,最好打开 SQLDebug 并查看生成的输出,看看 SQL Query 是否有问题。 你如何获取对象来提供表格视图? @LombaX 我添加了一些额外的代码。 【参考方案1】:

首先:测试其他代码是否正常。简单地说,删除谓词(注释 setPredicate 行)。您应该在 tableview 中看到所有对象。

对吗?

第二:检查self.pageType是否设置正确。我没有在您的代码中看到您如何设置 self.pageType 测试你的谓词,像这样添加一个 NSLog 并检查结果是否正常:

NSLog(@"ANY streamTypes.type = %d", self.pageType);

第三: 据我了解,您有这种情况:

一个帖子只有一种流类型 一种流类型有多个帖子。

ANY 关键字用于您希望获得至少一次满足特定条件的所有流类型的情况。例如(假设您的帖子上有一个“内容”实例变量,包含帖子的文本)

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY post.content CONTAINS[cd] %@", @"aWord"];

在这种情况下,您将获得所有的流类型,其中的帖子包含文本中包含“aWord”特定单词的帖子。

你的情况比较简单。我认为你应该简单地使用:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"streamTypes.type = %d", self.pageType];

试着告诉我

【讨论】:

谢谢。目前的情况正好相反。每个帖子可以有多个streamType(因为它可以在不同的流中使用),但每个streamType只能有一个帖子。写这句话可能已经把错误说清楚了,应该是多对多的关系吧? ???如果每个流类型只能有一个帖子,则结果是正确的。您使用一种流类型进行过滤,您将获得一篇文章。相反,如果它是多对多(与以前的情况不同,许多发布许多流类型),则谓词似乎是正确的。第一次和第二次尝试呢? 哈哈,谢谢,这就是问题所在。总是很简单! :)【参考方案2】:

我只是在 Swift 中使用 Core Data 时遇到了同样的问题,只是想添加这个答案,以防其他人遇到类似的问题。

这是我的 NSPredicate 代码:

让谓词 = NSPredicate(格式: "routine == %@", self.selectedRoutine)

Routine 包含多个我试图返回的锻炼对象。一个练习只能有一个套路,但一个套路可以有很多套路。

原来我忘记在我的常规实体中使用数据模型检查器选择“To Many”作为练习关系的关系类型。它被设置为“To One”。

【讨论】:

以上是关于NSPredicate/TableView 只显示一项,为啥?的主要内容,如果未能解决你的问题,请参考以下文章

wc统计命令 -l只显示行数 -w只显示单词数 -c只显示字节数

wc统计命令 -l只显示行数 -w只显示单词数 -c只显示字节数

Arcgis中,如何只显示选定的要素

bootstrap datetimepicker 中只显示年或者只显示月份

多行文字只显示一行,其它隐藏并显示为...;多行文字只显示前两行,其它隐藏并显示为...

img只显示图片一部分 或 css设置背景图片只显示图片指定区域