我有一个具有一对多关系的托管对象模型A和B.
对于这个特殊的任务,我想要检索所有与B有关系的A对象,其属性与“string”匹配。
我曾尝试过@"ALL bObjects.bProperty MATCHES 'string'"
,它导致了一个objc_exception_throw:
[NSSQLGenerator generateSQLStatementForFetchRequest:ignoreInheritance:countOnly:]
什么似乎是问题?
有人可以告诉我正确的谓词格式吗?
答案 0 :(得分:0)
根据Predicate Programming Guide,从Core Data SQL商店中提取时,您无法使用MATCHES
运算符。
matches
运算符使用regex
,因此Core Data的SQL存储不支持它 - 尽管它可以用于内存中过滤。
对于谓词的其余部分,它目前只返回A
个对象,其中整个bObjects
集合的bProperty
与您的输入字符串匹配。
如果你想要的是返回A
集合中任何具有任何对象的bObjects
个对象,那么你想要使用ANY
运算符修饰符。
ANY bObjects.bProperty LIKE[cd] 'string'
答案 1 :(得分:0)
感谢您指出这些限制,是的,我想要相信文档,我尝试MATCHES for SQLite获取请求,它确实有效,但为了安全起见,我将其更改为LIKE。
唯一不起作用的是,如果我在使用SQLite存储的Core Data上使用此谓词,并在相关对象上使用获取请求(在这种情况下为to-many),而不使用匹配。
现在,我没有使用基于关系的获取查询,风险太大,我仍然不知道这是什么错误,我在devforums.apple.com上发布了这个,但是没有人仍然回答它。 / p>