1

我在本网站的一篇文章中找到了以下在 Objective-C 中解析 XML 的技巧。但是,y似乎总是等于 null。我想知道是否有人可以澄清这里发生了什么。

NSString * q = [myURL query];
NSArray * pairs = [q componentsSeparatedByString:@"&"];
NSMutableDictionary * kvPairs = [NSMutableDictionary dictionary];
for (NSString * pair in pairs) {
  NSArray * bits = [pair componentsSeparatedByString:@"="];
  NSString * key = [[bits objectAtIndex:0] stringByReplacingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
  NSString * value = [[bits objectAtIndex:1] stringByReplacingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
  [kvPairs setObject:value forKey:key];
}

NSLog(@"y = %@", [kvPairs objectForKey:@"y"]);
4

1 回答 1

0

建立一个由 URL 调用组成的字符串,例如http://www.somewhere.com/form?name=john&x=123&y=456 NSString * q = [myURL query];

创建键值对数组 name=john, x=123, y=456 NSArray * pairs = [q componentsSeparatedByString:@"&"];

初始化用于存储键值对的字典 NSMutableDictionary * kvPairs = [NSMutableDictionary dictionary];

初始化一个临时变量“pair”并遍历数组 for (NSString * pair in pairs) {

将 = 左侧的键与值 NSArray * bits = [pair componentsSeparatedByString:@"="]; 存储密钥 NSString * key = [[bits objectAtIndex:0] stringByReplacingPercentEscapesUsingEncoding:NSASCIIStringEncoding]; 存储值 NSString * value = [[bits objectAtIndex:1] stringByReplacingPercentEscapesUsingEncoding:NSASCIIStringEncoding];

用键 [kvPairs setObject:value forKey:key] 的值填充字典;}

在这里,您将打印出键“y”的值,它应该是 456 NSLog(@"y = %@", [kvPairs objectForKey:@"y"]);

没有其余代码,可能发送的 url 没有键名“y”,就像我在示例中分解的那样。

我希望这有帮助!!

于 2010-10-05T20:30:39.850 回答