3

core dataLIKE [c]%@和in之间的确切区别是什么?我想搜索一个应该与接收者完全匹配的字符串。例子 : = [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和之间的区别在于允许和作为通配符,其中匹配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 回答