Lup*_*upi 11 objective-c nsurl
我想我不明白"baseURL"的概念.这个:
NSLog(@"BASE URL: %@ %@", [NSURL URLWithString:@"http://www.google.es"], [[NSURL URLWithString:@"http://www.google.es"] baseURL]);
Run Code Online (Sandbox Code Playgroud)
打印这个:
BASE URL: http://www.google.es (null)
Run Code Online (Sandbox Code Playgroud)
当然,在Apple文档中我读到了这个:
返回值接收方的基本URL.如果接收者是绝对URL,则返回nil.
我想从这个示例网址中获取:
https://www.google.es/search?q=uiviewcontroller&aq=f&oq=uiviewcontroller&sourceid=chrome&ie=UTF-8
这个基本URL
我的问题很简单.有没有更简洁的方法来获取实际的基本URL而不连接方案和主机名?我的意思是,基本URL的目的是什么呢?
Mik*_*lah 29
-baseURL
是一个纯粹的概念,NSURL/CFURL
而不是一般的URL.如果你这样做:
[NSURL URLWithString:@"search?q=uiviewcontroller"
relativeToURL:[NSURL URLWithString:@"https://www.google.es/"]];
Run Code Online (Sandbox Code Playgroud)
那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];
Run Code Online (Sandbox Code Playgroud)
这会给一个hostURL
的https://www.google.es/
我有这样的方法作为KSFileUtilities的-[NSURL ks_hostURL]
一部分发布(向下滚动自述文件以找到它记录)
如果你想要纯粹的主机而不是像计划/端口等那样的东西那么-[NSURL host]
你的方法就是这样.
BaseURL 的文档。
baseURL
Returns the base URL of the receiver.
- (NSURL *)baseURL
Return Value
The base URL of the receiver. If the receiver is an absolute URL, returns nil.
Availability
Available in iOS 2.0 and later.
Declared In
NSURL.h
Run Code Online (Sandbox Code Playgroud)
似乎它只适用于相对 URL。
你可能会使用...
NSArray *pathComponents = [url pathComponents]
Run Code Online (Sandbox Code Playgroud)
然后取出你想要的部分。
或者尝试...
NSString *host = [url host];
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9376 次 |
最近记录: |