iOS开发_周边

URLWithString 返回 nil

2019-03-21  本文已影响0人  lucky_frank

+ (nullable instancetype)URLWithString:(NSString *)URLString;在将 NSString 类型的数据转换成 NSUrl类型的时候这个方法是最常用的一个。

一般情况下,该方法都能返回我们需要的内容,比如:[NSURL URLWithString:@"https://www.baidu.com"];

我们的项目中有个自定义的网络请求URL,类似这种:@“123456”,6位数的数字,我们会对这种URL进行拦截处理。最近有一个崩溃是因为后台传了一个这样的数据:@"600332"(注意和@"600332"的区别),刚开始我还以为是数字中间插入了空格,把数据复制处理一看才发现不是这样,服务器返回的是全角字符串——相当于返回的是中文。

将字符串转换成URL时,字符串中的中文、特殊符号&%和空格都必须进行转译才能正确访问。

如何转:

方法一:

NSString *str = @"600332";    

NSString *webStr = [str stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]];

//转换后的 webStr = %EF%BC%96%EF%BC%90%EF%BC%90%EF%BC%93%EF%BC%93%EF%BC%92

方法二:

NSString * string = @"abcdefg,";//600332
    
NSMutableString *convertedString = [string mutableCopy];
    
CFStringTransform((CFMutableStringRef)convertedString, NULL, kCFStringTransformFullwidthHalfwidth, false);
    

方法三:

NSString *urlStr = @"600332";
urlStr = [NSString stringWithFormat:@"%d,[urlStr intValue]];
NSURL * url = [NSURL URLWithString:urlStr];

参考文章:

https://www.cnblogs.com/Doule/p/6567418.html

上一篇 下一篇

猜你喜欢

热点阅读