gpt4 book ai didi

objective-c - NSURL baseURL 返回 nil。获取实际基本 URL 的任何其他方式

转载 作者:太空狗 更新时间:2023-10-30 03:23:03 24 4
gpt4 key购买 nike

我想我不明白“baseURL”的概念。这:

NSLog(@"BASE URL: %@ %@", [NSURL URLWithString:@"http://www.google.es"], [[NSURL URLWithString:@"http://www.google.es"] baseURL]);

打印这个:

BASE URL: http://www.google.es (null)

当然,在 Apple docs 中我读了这个:

Return Value The base URL of the receiver. If the receiver is an absolute URL, returns nil.

我想从此示例 URL 中获取:

https://www.google.es/search?q=uiviewcontroller&aq=f&oq=uiviewcontroller&sourceid=chrome&ie=UTF-8

这个基本 URL

https://www.google.es

我的问题很简单。有没有更简洁的方法来获取实际的基本 URL 而无需连接方案和主机名?我的意思是,那么基本 URL 的目的是什么?

最佳答案

-baseURL 是一个纯粹的 NSURL/CFURL 概念,而不是一般的 URL。如果您这样做:

[NSURL URLWithString:@"search?q=uiviewcontroller"
relativeToURL:[NSURL URLWithString:@"https://www.google.es/"]];

然后 baseURL 将是 https://www.google.es/。简而言之,只有当 NSURL 是使用显式传入基本 URL 的方法创建时,才会填充 baseURL。此功能的主要目的是处理相对 URL 字符串,例如可能在典型网页的源代码中找到的字符串。

相反,您所追求的是采用任意 URL 并将其剥离回主机部分。我所知道的最简单的方法是有点狡猾:

NSURL *aURL =  [NSURL URLWithString:@"https://www.google.es/search?q=uiviewcontroller"];
NSURL *hostURL = [[NSURL URLWithString:@"/" relativeToURL:aURL] absoluteURL];

这将提供 https://www.google.es/hostURL

作为 KSFileUtilities 的一部分,我将这样的方法发布为 -[NSURL ks_hostURL] (向下滚动自述文件以找到它的文档)

如果你只想要主机而不是方案/端口等任何东西,那么 -[NSURL host] 就是你的方法。

关于objective-c - NSURL baseURL 返回 nil。获取实际基本 URL 的任何其他方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15895734/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com