URLWithString:(NSString *)str relativeToURL:(NSURL *)baseURL中baseURL结尾字段的问题

问题描述

URLWithString:(NSString *)str relativeToURL:(NSURL *)baseURL中baseURL结尾字段的相关问题拼接后被去掉的问题,情况如下图:

NSURL *url = [NSURL URLWithString:@"http://example.com/v1"];
NSLog(@"%@",url);
NSURL *newURL = [NSURL URLWithString:@"foo?bar=baz" relativeToURL:url];
NSLog(@"newURL:%@",[newURL absoluteString]);
wenti.png

其中“v1”拼接后就被去掉了。

解决方法

在baseURL后拼接一个空字符串,即可解决这个问题,如果baseURL本身结尾带“/”,则空字符串不产生作用;如果baseURL结尾没有“/”,则拼接完成后会在baseURL上加入“/”。
如果这时再执行URLWithStringrelativeTOURL:就不会去掉任何字段了

url = [url URLByAppendingPathComponent:@""];
NSLog(@"****url:%@",[url absoluteString]);
newURL = [NSURL URLWithString:@"foo?bar=baz" relativeToURL:url];
NSLog(@"====newURL:%@",[newURL absoluteString]);
solve.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容