首页 文章

核心数据嵌套关系获取谓词

提问于
浏览
0

好的,所以寻找答案,我可能会假设其他人不是,这就是解决方案为他们工作的原因 .

Problem :假设我有一个名为 DogOwner 的实体 . 狗主人可以有多个 Dogs ,每只狗可以有多个 Wearables . 请注意,所有关系都是可选的,并且是一对多的(反对多对一) .

Aim: 搜索拥有 Wearable 类型 GpsTracker 且包含id为 898764 的狗的所有犬主 .

My approach: 使用以下谓词获取实体 DogOwner

NSPredicate(format: "(dog.wearable.type == %@) AND (dog.wearable.external_id CONTAINS[cd] %@)", theType, theIdentifier)

我收到 unimplemented SQL generation for predicate 错误 .

Tried - > with ANYNested core data fetch)尝试了互联网上出现的其他内容 . 到目前为止,我没有看到任何工作,我认为问题是更深层次的,因为嵌套树结构图正被其他人使用点表示法成功查询 .

2 回答

  • -1

    我认为您需要使用SUBQUERY,只是因为您需要同时测试这两个条件:

    NSPredicate(format: "SUBQUERY(dog, $d, SUBQUERY($d.wearable, $w, $w.type == %@ AND $w.external_id CONTAINS[cd] %@).@count > 0).@count > 0", theType, theIdentifier)
    

    或者“获取DogOwners拥有超过0条狗,其中有超过0条可穿戴设备符合标准” .

  • 0

    虽然子查询是一种可行的方法,但它非常复杂,而且不必要 . 为什么不直接搜索特定的 Wearable 并通过方便的一对一关系获得所有者?

    // fetch wearable with id x
    let owner = wearable.dog.owner
    

相关问题