0

1 対多の関係を持つマネージド オブジェクト モデル A と B があります。

この特定のタスクでは、「文字列」に一致するプロパティを持つ B との関係を持つすべての A オブジェクトを取得したいと考えています。

を試し@"ALL bObjects.bProperty MATCHES 'string'"ましたが、objc_exception_throw が発生しました。

[NSSQLGenerator generateSQLStatementForFetchRequest:ignoreInheritance:countOnly:]

問題に見えるのは ?

誰でも正しい述語形式についてアドバイスできますか?

4

2 に答える 2

0

その制限を指摘してくれてありがとう、はい、私はドキュメントを信じたいと思っています.SQLiteフェッチリクエストに対してMATCHESを試しましたが、安全のためにLIKEに変更しましたが、うまくいきました。

唯一うまくいかないのは、一致を使用せずに、関連オブジェクト (この場合は to-many) のフェッチ要求で SQLite ストレージを使用して Core Data でこの述語を使用している場合です。

現在、私はリレーションシップに基づくフェッチ クエリを使用していません。リスクが高すぎます。何が間違いなのかまだわかりません。これを devforums.apple.com に投稿しましたが、誰もまだ答えていません。

于 2009-07-27T17:02:48.503 に答える
0

Predicate Programming Guideによると、MATCHESCore Data SQL ストアからフェッチするときに演算子を使用することはできません。

このmatches演算子は を使用するregexため、Core Data の SQL ストアではサポートされていませんが、インメモリ フィルタリングでは機能します。

述語の残りの部分については、現在、入力文字列と一致するa を持つAオブジェクトのみが返されます。bObjectsbProperty

一致するセットA内のオブジェクトを持つオブジェクトを返すことが必要な場合は、演算子修飾子を使用する必要があります。bObjectsANY

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