3

コアデータLIKE [c]%@との正確な違いは何ですか?受信者と完全に一致する文字列を検索したい。例 : = [c]%@NSPredicate

NSArray *arrayNames = [context fetchObjectsForEntityName:NSStringFromClass([PatientFamilyMember class])
      withSortColumn:nil withSortDescending:FALSE
      withPredicate:@"patientID = %@ && firstName=[c]%@ && relationship=[c]%@ && lastName=[c]%@",
      self.pfm.patientID, firstName, relationship, lastName];

LIKE [c]これは機能しますが、使用との違いを理解していません= [c]%@.

4

1 に答える 1

13

述語でのLIKEとの違いは、ワイルドカード文字としてandを使用できることです。ここで、 は1 文字に一致し、0 個以上の文字に一致します。=LIKE?*?*

との両方LIKE=変更して、大文字と[c]小文字を区別しないように指定できます。

例: 名前を持つオブジェクトがあるとします。

"Mark", "mark", "Mike", "mike", "M*"

両方

[NSPredicate predicateWithFormat:@"name = %@", @"Mark"];
[NSPredicate predicateWithFormat:@"name LIKE %@", @"Mark"];

「マーク」を見つけ、両方

[NSPredicate predicateWithFormat:@"name =[c] %@", @"Mark"];
[NSPredicate predicateWithFormat:@"name LIKE[c] %@", @"Mark"];

「マーク」と「マーク」を見つけます。ただしLIKE、ワイルドカードを使用できるのは演算子のみです。

[NSPredicate predicateWithFormat:@"name LIKE[c] %@", @"M*"];

"Mark"、"mark"、"Mike"、"mike"、"M*" を検索しますが、

[NSPredicate predicateWithFormat:@"name ==[c] %@", @"M*"];

"M*" のみを検索します。

詳細については、「述語プログラミング ガイド」の文字列比較を参照してください。

于 2013-01-29T09:07:30.747 に答える