All 子句核心数据谓词未按预期工作

Posted

技术标签:

【中文标题】All 子句核心数据谓词未按预期工作【英文标题】:The All clause Core data Predicate does not work as expected 【发布时间】:2012-06-29 10:16:12 【问题描述】:

我的核心数据模型是这样的:

实体A >实体B 实体C

现在,我想获取EntityB 的对象,其中EntityC == nil

我想过很多选择:

我试过的是:

ANY EntityB.EntityC == nil

虽然这不会出错,但它并没有按我的预期工作,因为它会搜索EntityA 的所有对象,即使不是nil,它也会采用EntityA 的对象。

所以我尝试的是:

ALL Participant.ParticipantCategory == nil

但这会报错:

由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'不支持的谓词(空)

我也尝试过使用子查询,但没有成功。我花了几个小时试图解决它,但没有运气。

有什么想法吗?

【问题讨论】:

您可以发布您尝试过的子查询吗? 这是子查询:SUBQUERY(Participant, $part, part.ParticipantCategory == nil).@count > 0。为此,我收到此错误:由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'keypath part.ParticipantCategory not found in entity 这里,entityB 是 Participant,EntityC 是 ParticipantCategory。 【参考方案1】:

我认为你的谓词应该是:Participant.ParticipantCategory == nil

ANY 关键字描述为here。我认为它的行为应该如此。而且我不知道ALL 关键字。

【讨论】:

No Luck Paul :( 我已经尝试过了。如果我这样做了,我会收到此错误:Participant.ParticipantCategory == nil: Terminating app due to unaught exception 'NSInvalidArgumentException',原因:'to-many此处不允许使用密钥”。还有其他想法吗? 如果是一对多关系。试试 Participant.ParticipantCategory.@count == 0 非常感谢保罗。有效!!不过我不知道这样的事情。 我的错,它在所有情况下都没有成功。仍在修补问题。 @PauldeLange 非常感谢!!!!这让我很头疼。我希望你能把这个作为答案发布

以上是关于All 子句核心数据谓词未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

核心数据和谓词

xCode / iOS - 需要帮助使核心数据搜索谓词工作

谓词下推 vs On 子句

Linq In 子句和谓词构建

核心数据和关系谓词

Hive - Parquet 格式 - OR 子句在未按预期工作的地方