stringByAppendingPathComponent中的基础错误?

时间:2011-04-06 15:07:31

标签: cocoa cocoa-touch url foundation

我在iOS应用和基础工具中尝试了以下一行:

[@"http://www.apple.com/" stringByAppendingPathComponent:@"/"]

每次我得到的结果都是:

@"http:/www.apple.com"

换句话说,stringByAppendingPathComponent,除了不附加任何内容(我预期的)之外,还会吞下最后一个/(可以认为是好的,等等), 吞下一个网址方案/,这在我的书中完全确定。

这只发生在我身上吗?在我提交错误报告之前,我是否错过了一些愚蠢的东西?

1 个答案:

答案 0 :(得分:3)

首先,请注意stringByAppendingPathComponent:的文档:

  

请注意,此方法仅适用于文件路径(例如,不适用于URL的字符串表示形式)。

因此,您正在使用该方法来处理不支持的案例。

将它与文件路径一起使用会显示相同的行为:

[@"/abc/" stringByAppendingPathComponent:@"/"];     // -> @"/abc"
[@"/abc/" stringByAppendingPathComponent:@"/def/"]; // -> @"/abc/def"

因此,无论斜杠是原始路径还是参数的一部分,该方法似乎总是更喜欢不以尾部斜杠结尾的路径。不过,我不知道我是否会称这是一个错误。毕竟,/abc/abc/都指定了文件系统上的相同项目,不是吗?

但听起来确实可以更好地记录确切的行为。