我試圖通過'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