2

我在 iOS 应用程序和 Foundation 工具中尝试了以下行:

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

每次我得到的结果都是:

@"http:/www.apple.com"

换句话说,stringByAppendingPathComponent除了不附加任何东西(这是我所期望的)之外,吞下最后一个/(这可能被认为是可以的),吞下其中一个 URL 方案,这在我的书中/完全不合适。

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

4

1 回答 1

3

首先,请注意以下文档stringByAppendingPathComponent:

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

因此,您正在将该方法用于它不支持的情况。

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

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

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

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

于 2011-04-06T15:22:34.513 回答