NSPredicate
を使用してLIKE
条件を設定してオブジェクトを取得する方法を探しています。それに加えて、OR
も有用です。ユーザーが「James」を検索した場合、次と同等のことを行うNSPredicate
を作成できるようなことをしようとしています。
select * from users where firstname LIKE '%James%' OR lastname LIKE '%James%';
NSString *_mySearchKey = @"James";
NSPredicate *_myPredicate = [NSPredicate predicateWithFormat:@"(firstname CONTAINS[cd] %@) OR (lastname CONTAINS[cd] %@)", _mySearchKey, _mySearchKey];
CONTAINS
演算子は確かにうまく機能します。より直接的な相関関係を探している場合は、LIKE演算子(*
= 0文字以上、?
= 1文字):
NSString *_mySearchKey = @"James";
NSPredicate *_myPredicate = [NSPredicate predicateWithFormat:@"firstname LIKE '*%1$@*' OR lastname LIKE '*%1$@*'", _mySearchKey];
別の可能性
@"firstname beginswith[c] James"
含む素敵な代替として
時々含むは必ずしも正しい答えではありません