我有一个非常简单的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”,它的值是正确的。我觉得我错过了一些重要的秘密。可能是因为我使用的是字符串而不是字符?
思想?
答案 0 :(得分:4)
查看文档here
如果使用变量替换 %@(比如firstName就像%@),. 为您添加引号 自动。
所以基本上,它正在寻找以“p”开头而不是p的名字。将代码更改为:
NSPredicate *sPredicate = [NSPredicate predicateWithFormat:@"name beginswith %@", theString];
应该有效