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



好的,所以寻找答案,我可能做了一些假设,其他人不是,这就是为什么解决方案是为他们工作。

:假设有一个实体叫DogOwner。一个狗主人可以有多个Dogs,每只狗可以有多个Wearables。注意,所有的关系都是可选的,并且是一对多(逆多对一)。

目的:搜索拥有Wearable类型GpsTracker且id为898764的狗的所有狗主人。

我的方法:使用以下谓词

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

我得到一个unimplemented SQL generation for predicate错误。

try -> with ANY(嵌套核心数据获取)尝试了互联网上的其他东西。到目前为止,我没有看到任何工作,我认为问题更深入,因为嵌套的树结构图正在被其他人使用点符号成功查询。

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

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

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

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

或"获取拥有超过0只狗且拥有超过0个符合标准的可穿戴设备的DogOwners "

最新更新