You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Core Data NSPredicate如何筛选关联事件ID在指定数组中的Servers对象

NSPredicate 匹配一对多关联对象错误解决方案

错误原因

你的原有写法存在两处语法问题,导致格式解析失败:

  • SUBQUERY 执行后返回的是符合条件的Event对象集合,谓词需要接收布尔类型的判断结果,你没有对返回集合的长度做判断,语法不完整
  • SUBQUERY 已经在逐一遍历events关联集合中的每一个$event对象,内部判断条件不需要额外加ANY修饰符,重复修饰会触发语法错误

可行解决方案

方案1:简化写法(推荐,满足当前需求)

如果你只需要判断关联的Event中至少有一个ID在目标数组中,不需要额外的匹配条件,可以直接用以下写法,无需调用SUBQUERY:

// 如果你的Event实体ID属性名为clientID,替换id为clientID即可
NSPredicate(format: "ANY events.id IN %@", [1,2,3] as CVarArg)

方案2:SUBQUERY 写法(适合后续需要加更多匹配条件的场景)

如果你后续还要对Event加更多筛选条件,可以用修正后的SUBQUERY写法:

// 如果你的Event实体ID属性名为clientID,替换id为clientID即可
NSPredicate(format: "SUBQUERY(events, $event, $event.id IN %@).@count > 0", [1,2,3] as CVarArg)

以上两种写法都可以实现「查询所有关联的Event的ID处于指定数组内的Server对象」的需求。

内容的提问来源于stack exchange,提问作者Cam Scen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 15:39:03