美文网首页
URLWithString:relativeToURL: 对re

URLWithString:relativeToURL: 对re

作者: Rumbles | 来源:发表于2019-01-24 10:07 被阅读8次

    第一种情况 baseURL 中的URL地址以 / 结

    NSURL *baseURL = [NSURL URLWithString:@"http://example.com/v1/v2/"];
        NSURL *baseURL2 = [NSURL URLWithString:@"foo"relativeToURL:baseURL];
        NSURL *baseURL3 = [NSURL URLWithString:@"foo?bar=baz"relativeToURL:baseURL];
        NSURL *baseURL4 = [NSURL URLWithString:@"/foo"relativeToURL:baseURL];
        NSURL *baseURL5 = [NSURL URLWithString:@"foo/"relativeToURL:baseURL];
        NSURL *baseURL6 = [NSURL URLWithString:@"/foo/"relativeToURL:baseURL];
        NSURL *baseURL7 = [NSURL URLWithString:@"http://example2.com/"relativeToURL:baseURL];
        NSLog(@"baseURL2:%@",[baseURL2 absoluteString]);
        NSLog(@"baseURL3:%@",[baseURL3 absoluteString]);
        NSLog(@"baseURL4:%@",[baseURL4 absoluteString]);
        NSLog(@"baseURL5:%@",[baseURL5 absoluteString]);
        NSLog(@"baseURL6:%@",[baseURL6 absoluteString]);
        NSLog(@"baseURL7:%@",[baseURL7 absoluteString]);
    

    结果

    2017-06-30 16:16:24.719 test[48991:682179] baseURL2:http://example.com/v1/v2/foo
    2017-06-30 16:16:24.719 test[48991:682179] baseURL3:http://example.com/v1/v2/foo?bar=baz
    2017-06-30 16:16:24.719 test[48991:682179] baseURL4:http://example.com/foo
    2017-06-30 16:16:24.720 test[48991:682179] baseURL5:http://example.com/v1/v2/foo/
    2017-06-30 16:16:24.720 test[48991:682179] baseURL6:http://example.com/foo/
    2017-06-30 16:16:24.720 test[48991:682179] baseURL7:http://example2.com/
    

    第二种情况 baseURL 中的URL地址不以 / 结尾

        NSURL *baseURL = [NSURL URLWithString:@"http://example.com/v1/v2"];
        NSURL *baseURL2 = [NSURL URLWithString:@"foo"relativeToURL:baseURL];
        NSURL *baseURL3 = [NSURL URLWithString:@"foo?bar=baz"relativeToURL:baseURL];
        NSURL *baseURL4 = [NSURL URLWithString:@"/foo"relativeToURL:baseURL];
        NSURL *baseURL5 = [NSURL URLWithString:@"foo/"relativeToURL:baseURL];
        NSURL *baseURL6 = [NSURL URLWithString:@"/foo/"relativeToURL:baseURL];
        NSURL *baseURL7 = [NSURL URLWithString:@"http://example2.com/"relativeToURL:baseURL];
        NSLog(@"baseURL2:%@",[baseURL2 absoluteString]);
        NSLog(@"baseURL3:%@",[baseURL3 absoluteString]);
        NSLog(@"baseURL4:%@",[baseURL4 absoluteString]);
        NSLog(@"baseURL5:%@",[baseURL5 absoluteString]);
        NSLog(@"baseURL6:%@",[baseURL6 absoluteString]);
        NSLog(@"baseURL7:%@",[baseURL7 absoluteString]);
    

    结果

    2017-06-30 16:41:57.860 test[49329:691038] baseURL2:http://example.com/v1/foo
    2017-06-30 16:41:57.861 test[49329:691038] baseURL3:http://example.com/v1/foo?bar=baz
    2017-06-30 16:41:57.861 test[49329:691038] baseURL4:http://example.com/foo
    2017-06-30 16:41:57.861 test[49329:691038] baseURL5:http://example.com/v1/foo/
    2017-06-30 16:41:57.861 test[49329:691038] baseURL6:http://example.com/foo/
    2017-06-30 16:41:57.861 test[49329:691038] baseURL7:http://example2.com/
    

    从以上的结果中可以看出:

    只要URLWithString 中的参数格式是/xx ,即是以/ 开头的,那么输出结果就是在baseURL中的http://example.com后面直接添加 URLWithString中的参数,baseURL 中的xx.com后的路径参数等全部不需要了。
    如果URLWithString 中的参数格式不是以/开头的,那么就要看baseURL中的路径是不是以/结尾,

    如果是,那么直接拼接到baseURL路径后面
    如果不是,那么就需要找到baseURL路径后面倒数第一个 / 的位置,插入 URLWithString 字符串即可,即删除 baseURL 后面的 v2

    如果URLWithString 是完整的网址,则直接替换 URLWithString
    完工....

    链接:https://www.jianshu.com/p/b4f143d9e346

    相关文章

      网友评论

          本文标题:URLWithString:relativeToURL: 对re

          本文链接:https://www.haomeiwen.com/subject/rifyjqtx.html