0

我有一个具有一对多关系的托管对象模型 A 和 B。

对于这个特定的任务,我想检索与 B 有关系且属性与“字符串”匹配的所有 A 对象。

我试过了@"ALL bObjects.bProperty MATCHES 'string'",它导致了一个 objc_exception_throw:

[NSSQLGenerator generateSQLStatementForFetchRequest:ignoreInheritance:countOnly:]

似乎是什么问题?

任何人都可以告诉我正确的谓词格式吗?

4

2 回答 2

0

根据谓词编程指南MATCHES,从 Core Data SQL 存储中获取时不能使用运算符。

matches运算符使用regex, 所以不受 Core Data 的 SQL 存储支持——尽管它确实适用于内存过滤。

至于谓词的其余部分,它目前只会返回A整个集合bObjects具有bProperty与您的输入字符串匹配的对象。

如果您想要返回A在集合中具有匹配的任何对象的任何对象bObjects,您将需要使用ANYoperator 修饰符。

ANY bObjects.bProperty LIKE[cd] 'string'
于 2009-07-27T05:32:15.197 回答
0

感谢您指出这些限制,是的,尽管我想相信文档,但我尝试了 MATCHES for SQLite fetch request,它确实有效,但为了安全起见,我将其更改为 LIKE。

唯一不起作用的是,如果我在 Core Data 上使用这个谓词,使用 SQLite 存储和相关对象上的获取请求(在这种情况下是对多),而不是使用匹配。

现在,我没有使用基于关系的获取查询,风险太大,我仍然不知道是什么错误,我已经在devforums.apple.com上发布了这个,但仍然没有人回答它。

于 2009-07-27T17:02:48.503 回答