ios URLWithString:relativeToURL: 對relativeToURL的理解

第一種情況 baseURL 中的URL地址以 / 結(jié)尾
    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]);
輸出結(jié)果
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地址不以 / 結(jié)尾
    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]);
輸出結(jié)果
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/

從以上的結(jié)果中可以看出:

  1. 只要URLWithString 中的參數(shù)格式是/xx ,即是以/ 開頭的,那么輸出結(jié)果就是在baseURL中的http://example.com后面直接添加 URLWithString中的參數(shù),baseURL 中的xx.com后的路徑參數(shù)等全部不需要了。
  2. 如果URLWithString 中的參數(shù)格式不是以/開頭的,那么就要看baseURL中的路徑是不是以/結(jié)尾,
  • 如果是,那么直接拼接到baseURL路徑后面
  • 如果不是,那么就需要找到baseURL路徑后面倒數(shù)第一個 / 的位置,插入 URLWithString 字符串即可,即刪除 baseURL 后面的 v2
  • 如果URLWithString 是完整的網(wǎng)址,則直接替換 URLWithString
    完工....
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容