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にかえれば動的なプロパティを設定することができます。