一尘不染

URL编码字符串

json

我收到一个json数据对象,然后从中提取一个字符串

NSDictionary *jsonDictionary = [NSJSONSerialization JSONObjectWithData:data
                                                               options:0
                                                                 error:nil];
NSString *country=jsonDictionary[@"address"][@"country"];

然后我尝试使该字符串适合在URL中使用

NSString *newCountryString = [country stringByReplacingOccurrencesOfString:@" "  
   withString:@"%%20"];

但它不起作用

如果我对newCountryString进行了硬编码,它将起作用,为什么呢?


阅读 260

收藏
2020-07-27

共1个答案

一尘不染

用这个 -

NSString *newCountryString = [country stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

此代码将使用给定的编码返回接收方的表示形式,以确定将接收方转换为合法URL字符串所需的转义百分比。

有关更多详细信息:https
:
//developer.apple.com/documentation/foundation/nsstring/1415058-stringbyaddingpercentescapesusin

编辑- 在iOS 9中不推荐使用stringByAddingPercentEscapesUsingEncoding。

[country stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]]

迅捷3-

country.addingPercentEncoding( withAllowedCharacters: .urlHostAllowed)

有关更多详细信息:https
:
//developer.apple.com/documentation/foundation/nsstring/1411946-stringbyaddingpercentencodingwitwit?language=objc

2020-07-27