5

NSPredicate に関する簡単な質問です。次のような「渡された」値を使用して述語を作成しようとしています。

NSPredicate* currentPredicate = [NSPredicate predicateWithFormat:@"%@ == %@",key,[changesDict valueForKey:@"Id"] ];

ただし、これを正しく機能させることができませんでした。通過する実際の値を挿入すると、機能します。したがって、これは機能します:

NSPredicate* currentPredicate = [NSPredicate predicateWithFormat:@"contactId == %@",[changesDict valueForKey:@"Id"] ];

(同じ名前で文字列を渡す前の例とは対照的に、contactId を挿入したことに注意してください)

トラブルシューティングを行うために、2 つの述語の説明を NSLogged しましたが、それらは異なっていました。以下にそれらを示します。

これは働いているものです

2013-01-17 10:29:25.513 TestingCoreData[1776:3b03] contactId == "5878"

これは非稼働中のものです

2013-01-17 10:29:25.513 TestingCoreData[1776:3b03] "contactId" == "5878"

したがって、後で取得リクエストで使用する属性の名前が本当に必要な場所に文字列を挿入していることがわかります。しかし、値を渡すことでこれを達成する方法はありますか?

4

1 に答える 1

14

キーまたはキー パスの場合は、次の%K形式を使用する必要があります。

[NSPredicate predicateWithFormat:@"%K == %@", key, [changesDict valueForKey:@"Id"]];

( 「述語プログラミング ガイド」のパーサーの基本を参照してください。)

于 2013-01-17T18:01:18.433 に答える