NSPredicate的奇怪行为,

时间:2012-03-14 14:58:48

标签: iphone ios core-data nspredicate

为什么这个谓词会返回结果:

predicate= [NSPredicate predicateWithFormat:@"itemsString like '*{4160366}*'"];

虽然这个谓词返回空数组

predicate= [NSPredicate predicateWithFormat:@"itemsString like '*{%@}*'",[NSString stringWithString:@"4160366"]];

我让我发疯了

1 个答案:

答案 0 :(得分:1)

构建谓词时,predicateWithFormat会在执行变量替换时自动添加引号。所以你的(第二个)谓词最终看起来像这样:

itemsString like '*{"4160366"}*'"

注意额外的报价集。

将其更改为:

predicate= [NSPredicate predicateWithFormat:@"itemsString like %@",[NSString stringWithFormat:@"*{%@}*", @"4160366"]];

它应该有用。

(请注意,我没有使用stringWithString而是使用@""来做同样的事情。)