将 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]];
【讨论】:
不应该是yourDict
是yourDictionary
?
另外,请确保使用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 不匹配则抛出
使用带有自定义分隔符的 postgres 按字符大小复制文本文件