NSString
簡単な修正として、パーツはまったく必要ありません。この置換がメソッドの要点predicateWithFormat:
です!単に使用してください:
NSPredicate *query = [NSPredicate predicateWithFormat:@"s_name == %@ AND s_regno == %d", Name, [RegNo intValue]];
フォーマット文字列を完全に避け、代わりにコードで述語を作成するのが好きです。
NSPredicate *nameQuery =
[NSComparisonPredicate predicateWithLeftExpression:[NSExpression expressionForKeyPath:@"s_name"]
rightExpression:[NSExpression expressionForConstantValue:Name]
modifier:NSDirectPredicateModifier
type:NSLikePredicateOperatorType
options:NSCaseInsensitivePredicateOption|NSDiacriticInsensitivePredicateOption];
NSPredicate *regNoQuery =
[NSComparisonPredicate predicateWithLeftExpression:[NSExpression expressionForKeyPath:@"s_regno"]
rightExpression:[NSExpression expressionForConstantValue:RegNo]
modifier:NSDirectPredicateModifier
type:NSEqualToPredicateOperatorType
options:0];
NSPredicate *query = [NSCompoundPredicate andPredicateWithSubpredicates:@[nameQuery,regNoQuery]];
NSCaseInsensitivePredicateOption|NSDiacriticInsensitivePredicateOption
のように、名前に対して大文字と小文字および発音区別符号に依存しない比較を行うために追加したことに注意してくださいs_name like[cd] %@
。それが必要ない場合は、もちろんtype:NSEqualToPredicateOperatorType
とを使用できますoptions:0
。