我已经阅读了文档,看起来一些边缘情况可能会有所不同(斜杠等),但我不清楚这两种方法之间的主要区别是什么。组件和扩展这两个术语在我以外的人理解的 URL 世界中是否具有特殊含义?
问问题
8036 次
2 回答
18
路径扩展用于添加诸如.html
URL 之类的东西,路径组件用于添加诸如/news/local
. 路径扩展的文档:
如果原始 URL 以一个或多个正斜杠结尾,则这些正斜杠将从返回的 URL 中删除。在新 URL 的两个部分之间插入一个句点。
所以http://hello.com/news/
会变成http://hello.com/news.html
路径组件的文档:
如果原始 URL 不以正斜杠结尾且 pathComponent 不以正斜杠开头,则在返回的 URL 的两部分之间插入正斜杠,除非原始 URL 是空字符串。
所以http://hello.com/news/
会变成http://hello.com/news/html
这是一个快速测试:
NSURL *originalURL = [NSURL URLWithString:@"http://hello.com/news"];
NSLog(@"%@", [originalURL URLByAppendingPathComponent:@"local"]);
NSLog(@"%@", [originalURL URLByAppendingPathExtension:@"local"]);
输出:
http://hello.com/news/local
http://hello.com/news.local
于 2012-05-01T21:36:00.293 回答
4
每当我对这样的事情有疑问,并且文档没有帮助时,我只是在逻辑测试中对其进行测试。
NSURL *baseURL = [NSURL URLWithString:@"http://foo.com/bar/baz"];
NSURL *appendExtension = [baseURL URLByAppendingPathExtension:@"qux"];
NSURL *appendComponent = [baseURL URLByAppendingPathComponent:@"qux"];
STAssertEqualObjects([appendExtension absoluteString], @"http://foo.com/bar/baz.qux", nil);
STAssertEqualObjects([appendComponent absoluteString], @"http://foo.com/bar/baz/qux", nil);
就是这样,扩展名是.(文件类型),组件是/(目录)。
于 2012-05-01T21:47:51.947 回答