具有NSPredicate过滤问题的NSArray

时间:2014-02-24 17:50:43

标签: ios xml-parsing nsdictionary nspredicate

我有一个包含这些数据的填充数组。

"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-02-24 17:20:59.679 Info [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);

1 个答案:

答案 0 :(得分:0)

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

NSDictionary *filtertNew = [filtert objectAtIndex:0];

然后,谓词用于过滤,但您只想访问各个键值。所以使用:

NSString *value = [filtertNew objectForKey:attributeName];

如果您的目标实际上是过滤filtert数组,那么您的谓词是合适的,但应用于错误的事情。它应该是:

NSArray *result = [filtert filteredArrayUsingPredicate:predicate];

(尽管您可能希望在谓词中使用=而不是LIKE

相关问题