NSPredicate格式字符串,带有意外结果

时间:2014-01-10 02:56:31

标签: ios nspredicate

我正在学习NSPredicate,我有一个问题的例子。

NSArray * array = @[@{@"name":@"KudoCC"}, @{@"name":@"123"}] ;
NSPredicate * predicate = [NSPredicate predicateWithFormat:@"name == '%@'", @123] ;
NSArray * result = [array filteredArrayUsingPredicate:predicate] ;

这里的参数是@ 123,它是NSNumber类型。我认为它的作用与@"name == '123'"相同,但结果为nil,我预计为@{@"name":@"123"}

有人可以告诉我为什么吗?提前谢谢。

1 个答案:

答案 0 :(得分:2)

文件here说,

  

如果您使用%@使用变量替换(例如firstName,如%@),则会自动为您添加引号。

在常见情况下应避免使用引号。如果您使用@"%K == '%@'"之类的内容,则实际上是将密钥与@"%@"进行比较。只有你有像@[@{@"%@": @"KudoCC"}]这样的数组时,你才需要这样。