我正在尝试使用NSURL类引用中提供的方法解析URL以获取方案,路径和参数。但是我注意到,如果我以这种方式构建url(在方案之后没有双斜杠):
NSString *urlString = @"customScheme:myPath?parameter=hello&other_parameter=12";
NSURL *url = [NSURL URLWithString:urlString];
我无法从NSURL中获取任何这些值。换句话说,方法
path
query
返回零。
如果我像这样添加双斜杠:
NSString *urlString = @"customScheme://myPath?parameter=hello&other_parameter=12";
NSURL *url = [NSURL URLWithString:urlString];
一切正常。为什么是这样?
谢谢!
答案 0 :(得分:2)
Apple的文档中非常清楚地记录了这些方法:
path
返回符合RFC 1808的URL的路径。
- (NSString *)path
网址的路径,未使用
stringByReplacingPercentEscapesUsingEncoding:
方法转义。如果接收方不符合RFC 1808,则返回nil
。
RFC 1808非常清楚构成有效相对URL的内容:
<scheme>://<net_loc>/<path>;<params>?<query>#<fragment>
http://www.w3.org/Addressing/rfc1808.txt
如果您要解析mailto:
个网址等,则必须使用NSURL
之外的其他内容来执行此操作。
答案 1 :(得分:2)
对于非RFC 1808兼容的URL,您可能希望使用-[NSURL resourceSpecifier]
来检索冒号后的URL部分。在那之后,如果适合,你可以将它分解为“路径”和“查询”。