我试图通过'function
'属性搜索NSArray
。当我打印在控制台上阵列的输出如下:使用NSPredicate的predicateWithFormat时'无法解析格式字符串'函数==%@“':
<__NSArrayI 0xa523b40>(
{
category = "010-T";
description = "<h3>Opleidingen</h3>";
function = "T-r";
name = "Michal Jordan";
photo = "http://dws.com/34.jpg";
},
{
category = "010-T";
description = "abcd";
function = "AB";
name = "Pvt MSK";
photo = "http://test.com/3.jpg";
},
{
category = "010-T";
description = "def";
function = "T-r";
name = "Sanu M";
photo = "http://abc.com/1.jpg";
}
)
此代码,它通过“category
”搜索,工作原理:
NSString *categoryStr = @"010-T";
NSArray *arr = [NSArray arrayWithArray:[myarr filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"category == %@",categoryStr]]];
但是,当我用下面的代码尝试(搜索通过function
),引发了异常:
NSString *functionStr = @"T-r";
NSArray *arr = [NSArray arrayWithArray:[myarr filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"function == %@",functionStr]]];
唯一的例外是:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unable to parse the format string "function == %@"'
所以它看起来在这里,function
是一个保留关键字。
我试过下面的代码,用单引号将function
打包,但结果是arr
有0个对象。
NSArray *arr = [NSArray arrayWithArray:[myarr filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"'function' == %@",functionStr]]];
我在这里做错了什么?
有趣。也许尝试“self.function == [cd]%@”假设它是一个自定义类的数组。 – Jeremy 2013-04-04 02:42:22
是的,这很有趣,它是一个keyvalue对的数组,而你以后的解决方案给我错误如下:无法解析格式字符串“self.function == [cd]%@”,同样的权利? – 2013-04-04 02:48:14
另一件事,似乎功能是保留字,如果我尝试使用“名称”关键字,它正在工作.. – 2013-04-04 02:49:09