为什么这个NSPredicate不起作用?

时间:2010-06-28 16:54:40

标签: iphone objective-c string predicate nspredicate

我有一个非常简单的NSPredicate:

NSPredicate *sPredicate = [NSPredicate predicateWithFormat:@"name beginswith '%@'", theString];
[matchingTags filterUsingPredicate:sPredicate];

当theString ==“p”

时,这会导致数组的结果为0

然而,当我这样做时:

NSPredicate *sPredicate = [NSPredicate predicateWithFormat:@"name beginswith 'p'"];
[matchingTags filterUsingPredicate:sPredicate];

我按预期得到了100多个结果。

我用NSLog()检查了“theString”,它的值是正确的。我觉得我错过了一些重要的秘密。可能是因为我使用的是字符串而不是字符?

思想?

1 个答案:

答案 0 :(得分:4)

查看文档here

  

如果使用变量替换   %@(比如firstName就像%@),.   为您添加引号   自动。

所以基本上,它正在寻找以“p”开头而不是p的名字。将代码更改为:

NSPredicate *sPredicate = [NSPredicate predicateWithFormat:@"name beginswith %@", theString];

应该有效