我有一个包含这些数据的填充数组。
"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);
答案 0 :(得分:0)
你没有数组,你有一本字典,所以NSArray *filtertNew = [filtert objectAtIndex:0];
应该是
NSDictionary *filtertNew = [filtert objectAtIndex:0];
然后,谓词用于过滤,但您只想访问各个键值。所以使用:
NSString *value = [filtertNew objectForKey:attributeName];
如果您的目标实际上是过滤filtert
数组,那么您的谓词是合适的,但应用于错误的事情。它应该是:
NSArray *result = [filtert filteredArrayUsingPredicate:predicate];
(尽管您可能希望在谓词中使用=
而不是LIKE
)