Iphone 使用块将NSDictionary转换为字符串?

Iphone 使用块将NSDictionary转换为字符串?,iphone,objective-c,ios,nsdictionary,objective-c-blocks,Iphone,Objective C,Ios,Nsdictionary,Objective C Blocks,我确信有一种方法可以用积木来实现,但我想不出来。我想将NSDictionary转换为url样式的参数字符串。 如果我有这样一本词典: dict = [NSDictionary dictionaryWithObjectsAndKeys:@"blue", @"color", @"large", @"size", nil]]; "color=blue&size=large" 那么我如何将其转换为如下所示的字符串: dict = [NSDictionary dictionaryWithObj

我确信有一种方法可以用积木来实现,但我想不出来。我想将NSDictionary转换为url样式的参数字符串。 如果我有这样一本词典:

dict = [NSDictionary dictionaryWithObjectsAndKeys:@"blue", @"color", @"large", @"size", nil]];
"color=blue&size=large"
那么我如何将其转换为如下所示的字符串:

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

编辑

谢谢你提供以下线索。这应该做到:

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

创建一个可变字符串,然后迭代字典以获取每个键。查找该键的值,并将
key=value&
添加到字符串中。完成该循环后,删除最后一个&


我假设这是通过URL提供的,您还需要一些方法对字符串进行编码,以防它们包含诸如&或+,等等的项。

创建一个可变字符串,然后迭代字典以获取每个键。查找该键的值,并将
key=value&
添加到字符串中。完成该循环后,删除最后一个&

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];

我假设这是通过URL提供的,您还需要一些方法来编码字符串,以防它们包含诸如&或+,等等的项。

完全相同的解决方案,但没有子字符串:

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

完全相同的解决方案,但没有子字符串:

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

我想你应该把&从街区里面移走。没错!非常感谢。(谁发明了复制/粘贴?)!非常感谢。(谁发明了复制/粘贴?)