NSPredicateの条件で動的なプロパティを設定する

iPhone

NSPredicateを使ってCore Dataに保存しているデータを検索したいとき、プロパティを動的に変更したいときの方法を書きます。

通常は、

 [NSPredicate predicateWithFormat:@"weight == 100"];

の”weight”のようにプロパティは固定で検索すると思います。

“weight”の部分を動的に変えたい場合、こうやってしまいがちです!

 NSString* propertyName = @"height";
 [NSPredicate predicateWithFormat:@"%@ == 180", propertyName];

NSPredicateは文字列を勝手に「”」で括ります。
なので、

 "height" == 180

となってしまいます。

以下でこれを避けることができます。

 [NSPredicate predicateWithFormat:@"%K == 180", propertyName];

%@ を %Kにかえれば動的なプロパティを設定することができます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です