57

オブジェクトをフェッチするための条件をNSPredicate設定するために使用する方法を探しています。LIKEそれに加えて、ORも役に立ちます。私は、ユーザーが「ジェームズ」を検索した場合に、NSPredicate次と同等のことを行うことができる何かをしようとしています。

select * from users where firstname LIKE '%James%' OR lastname LIKE '%James%';
4

3 に答える 3

127
NSString *_mySearchKey = @"James";
NSPredicate *_myPredicate = [NSPredicate predicateWithFormat:@"(firstname CONTAINS[cd] %@) OR (lastname CONTAINS[cd] %@)", _mySearchKey, _mySearchKey];
于 2010-04-29T21:54:58.700 に答える
38

オペレーターはCONTAINS確かにうまく機能します。より直接的な相関関係を探している場合は、LIKE 演算子 ( *= 0 以上の文字、?= 1 文字)も使用できます。

NSString *_mySearchKey = @"James";
NSPredicate *_myPredicate = [NSPredicate predicateWithFormat:@"firstname LIKE '*%1$@*' OR lastname LIKE '*%1$@*'", _mySearchKey];

参考:
https ://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Predicates/Articles/pSyntax.html#//apple_ref/doc/uid/TP40001795-215868

于 2010-04-29T22:07:42.750 に答える
10

別の可能性

@"firstname beginswith[c] James"

含むための良い代替手段として

含まれていることが常に正しい答えであるとは限らない場合があります

于 2011-11-11T14:57:42.673 に答える