我想我不理解“baseURL”的概念。这:
NSLog(@"BASE URL: %@ %@", [NSURL URLWithString:@"http://www.google.es"], [[NSURL URLWithString:@"http://www.google.es"] baseURL]);
打印这个:
BASE URL: http://www.google.es (null)
当然,在苹果文档 https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/Reference/Reference.html我读到了这个:
返回值
接收者的基本 URL。如果接收者是绝对 URL,则返回 nil。
我想从这个示例 URL 中获取:
这个基本网址
https://www.google.es https://www.google.es
我的问题很简单。有没有更干净的方法来获取实际的基本 URL,而无需连接方案和主机名?我的意思是,那么基本 URL 的用途是什么?
-baseURL
纯粹是一个概念NSURL/CFURL
而不是一般的 URL。如果你这样做:
[NSURL URLWithString:@"search?q=uiviewcontroller"
relativeToURL:[NSURL URLWithString:@"https://www.google.es/"]];
then baseURL
将会https://www.google.es/
。简而言之,baseURL
仅当满足以下条件时才会被填充NSURL
使用显式传入基本 URL 的方法创建。此功能的主要目的是处理相对 URL 字符串,例如可能在典型网页的源代码中找到的字符串。
相反,您需要获取任意 URL 并将其剥离回主机部分。我知道的最简单的方法有点狡猾:
NSURL *aURL = [NSURL URLWithString:@"https://www.google.es/search?q=uiviewcontroller"];
NSURL *hostURL = [[NSURL URLWithString:@"/" relativeToURL:aURL] absoluteURL];
这将给出一个hostURL
of https://www.google.es/
我有这样的方法发布为-[NSURL ks_hostURL]
作为...的一部分KSFile实用程序 https://github.com/karelia/KSFileUtilities(向下滚动自述文件以找到其记录)
如果您纯粹想要主机而不是诸如方案/端口等之类的东西,那么-[NSURL host]
是你的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)