将 NSDictionary 解析为带有自定义分隔符的字符串

Posted

技术标签:

【中文标题】将 NSDictionary 解析为带有自定义分隔符的字符串【英文标题】:Parse NSDictionary to a string with custom separators 【发布时间】:2010-10-06 14:43:35 【问题描述】:

我有一个包含一些值的 NSMutableDictionary,我需要将键和值连接成一个字符串,所以

> name = Fred
> password = cakeismyfavoritefood
> email = myemailaddress@is.short

变成name=Fred&password=cakeismyfavoritefood&email=myemailaddress@is.short

我该怎么做?有没有办法将NSDictionaries 加入字符串?

【问题讨论】:

【参考方案1】:

您可以轻松地枚举字典键和对象:

NSMutableString *resultString = [NSMutableString string];
for (NSString* key in [yourDictionary allKeys])
    if ([resultString length]>0)
       [resultString appendString:@"&"];
    [resultString appendFormat:@"%@=%@", key, [yourDict objectForKey:key]];

【讨论】:

不应该是yourDictyourDictionary 另外,请确保使用stringByAddingPercentEscapesUsingEncoding: 转义字符串中的特殊字符和空格,以便获得合法的网址。【参考方案2】:

和Turning a NSDictionary into a string using blocks?的问题完全一样

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

【讨论】:

谢谢,我之前没发现这个问题。 (也许是因为我先问了?:))不过,我不太明白在这里使用alloc-init-**autorelease** 的原因。 autorelease 仅应在确实需要时使用,因为在此示例中不是(只需在设置 (NSString) 后释放数组。 (哦,正如有人在另一个问题中所说,“for”方法中的& 不应该存在) 精确的自动释放(和 &)。自动释放是少一行,但释放更好......

以上是关于将 NSDictionary 解析为带有自定义分隔符的字符串的主要内容,如果未能解决你的问题,请参考以下文章

在 Actionsheet 上选择的 NSDictionary,来自带有自定义单元格的 UITableView

解析带有小数和分组分隔符的货币字符串,或者如果 Pattern 不匹配则抛出

NSDictionary 与自定义对象

使用带有自定义分隔符的 postgres 按字符大小复制文本文件

mapreduce中设置自定义的输入类,进行文本解析(默认以tab键为分隔符)

Javascript:使用自定义键名和值将字符串数组解析为对象