我在iOS应用和基础工具中尝试了以下一行:
[@"http://www.apple.com/" stringByAppendingPathComponent:@"/"]
每次我得到的结果都是:
@"http:/www.apple.com"
换句话说,stringByAppendingPathComponent
,除了不附加任何内容(我预期的)之外,还会吞下最后一个/
(可以认为是好的,等等), 和 吞下一个网址方案/
,这在我的书中完全不确定。
这只发生在我身上吗?在我提交错误报告之前,我是否错过了一些愚蠢的东西?
答案 0 :(得分:3)
首先,请注意stringByAppendingPathComponent:
的文档:
请注意,此方法仅适用于文件路径(例如,不适用于URL的字符串表示形式)。
因此,您正在使用该方法来处理不支持的案例。
将它与文件路径一起使用会显示相同的行为:
[@"/abc/" stringByAppendingPathComponent:@"/"]; // -> @"/abc"
[@"/abc/" stringByAppendingPathComponent:@"/def/"]; // -> @"/abc/def"
因此,无论斜杠是原始路径还是参数的一部分,该方法似乎总是更喜欢不以尾部斜杠结尾的路径。不过,我不知道我是否会称这是一个错误。毕竟,/abc
和/abc/
都指定了文件系统上的相同项目,不是吗?
但听起来确实可以更好地记录确切的行为。