2014-02-24 175 views
0

我有一个填充数组与这些数据。带有NSPredicate过滤器问题的NSArray

"2014-02-24 17:20:45.791 Info[5120:70b] Position 0: { 
"0 : 0" = Ergebniss; 
12 = Identifier; 
"12.06.14" = Spieltag1; 
"Brasilien : Kroatien" = Spielpaarung;" 

此结构由XMLParser提供给我。我怎样才能读取字符串? ( “Brasilien:Kroatien”= Spielpaarung或0:0" = Ergebniss) 我试图将其与NSPredicate但得到一个错误信息

2014年2月24日17:20:59.679信息[5120:70B] *终止应用程序由于未捕获的异常“NSInvalidArgumentException”,理由是:“无法解析格式字符串‘Spielpaarung’” *第一掷调用堆栈:

我的代码:

NSArray *filtert = [NSArray arrayWithArray:self.wmXMLParser.alleAktionen]; 
for (int i = 0; i<[filtert count]; i++) { 
NSLog(@"Position %i: %@", i, filtert[i]); 
} 
NSArray *filtertNew = [filtert objectAtIndex:0]; 
NSString *attributeName = @"Brasilien : Kroatien"; 
NSString *attributeValue = @"Spielpaarung"; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K like %@", attributeName, 
attributeValue]; 
NSArray *result = [filtertNew filteredArrayUsingPredicate:predicate]; 
NSLog(@"%@", result); 
+0

你确定你没掉键和值? –

回答

0

你不有一个数组,你有一个字典,所以NSArray *filtertNew = [filtert objectAtIndex:0];应该lly是

NSDictionary *filtertNew = [filtert objectAtIndex:0]; 

然后,谓词用于过滤,但您只想访问个别键值。因此,使用:

NSString *value = [filtertNew objectForKey:attributeName]; 

如果你的目标实际上是对filtert滤镜阵列,然后你的谓词是合适的,但应用到错误的事情。它应该是:

NSArray *result = [filtert filteredArrayUsingPredicate:predicate]; 

(虽然你可能想使用=代替LIKE在谓语)