使用块将NSDictionary转换为string?

我相信有一种方法可以使用块来做到这一点,但我无法弄清楚。 我想把一个NSDictionary变成url风格的参数string。 如果我有一个NSDictionary看起来像这样:

dict = [NSDictionary dictionaryWithObjectsAndKeys:@"blue", @"color", @"large", @"size", nil]]; 

那我怎么把它变成一个看起来像这样的string:

 "color=blue&size=large" 

编辑

感谢下面的线索。 这应该做到这一点:

 NSMutableString *parameterString; [dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { [parameterString appendFormat:@"%@=%@&", key, obj]; }]; parameterString = [parameterString substringToIndex:[string length] - 1]; 

完全相同的解决scheme,但没有子string:

 NSMutableArray* parametersArray = [[[NSMutableArray alloc] init] autorelease]; [dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { [parametersArray addObject:[NSString stringWithFormat:@"%@=%@", key, obj]]; }]; NSString* parameterString = [parametersArray componentsJoinedByString:@"&"]; 

创build一个可变string,然后遍历字典获取每个键。 查找该键的值,并将key=value&添加到string中。 当你完成这个循环时,删除最后一个&。

我认为这将通过URL来提供,您还将需要一些方法来编码您的string,以防它们包含诸如&或等的项目等。

 NSMutableString* yourString = @""; for (id key in dict) { [yourString appendFormat:@"%@=%@&", key, ((NSString*)[dict objectForKey:key])]; } NSRange r; r.location = 0; r.size = [yourString length]-1; [yourString deleteCharactersInRange:r];