iOS – CoreDataにおける検索条件のエスケープ

CoreDataで以下のコードでtargetNameに該当するデータを検索する場合、targetNameにシングルクォート「'」が含まれていると、シングルクォートの「囲み」の整合性が取れなくなるので、アプリが落ちます。

NSString *searchCondition = [NSString stringWithFormat:@"name = '%@'", targetName];
NSPredicate *predicate = [NSPredicate predicateWithFormat:searchCondition];
[fetchRequest setPredicate:predicate];

このような場合はtargetNameに含まれているシングルクォートを以下のようにして事前にエスケープしておけば大丈夫です。

targetName = [targetName stringByReplacingOccurrencesOfString:@"'" withString:@"\\'"]

 

 

Rails – ヘルパーからの出力をエスケープしない方法

Rails 3.0以降では、メソッドから戻される文字列はエスケープするようになったため、文字列を返すヘルパーメソッドをView側で使う場合には以下のようにraw演算子を先頭に記述する必要があります。

明日は<%= raw get_tommorow %>です。

※上記のget_tommorowメソッドは文字列を返すヘルパーメソッドとする。