将 NSString 附加到 NSURL?

Posted

技术标签:

【中文标题】将 NSString 附加到 NSURL?【英文标题】:Append NSString to NSURL? 【发布时间】:2011-07-15 06:36:44 【问题描述】:

我有一个 NSURL,一个文件路径,我想在它的末尾添加一个 NSString(文件名),我该怎么做?但在这之后,我不希望整个事情成为一个 NSURL。

谢谢。

【问题讨论】:

【参考方案1】:

我认为这很简单:

    NSString *s = [aUrl.path stringByAppendingString:@"newString"];

【讨论】:

如果你使用这个,最终得到一个 NSURL,你必须这样做:[NSURL URLWithString:[aUrl.path stringByAppendingString:@"newString"]]【参考方案2】:

我认为这是一个很好的解决方案:

NSURL *bUrl = [aUrl URLByAppendingPathComponent:@"newString"];

在 Swift 中,您可以执行以下操作,

var bURL = aURL.URLByAppendingPathComponent( "newString" )

你也可以声明URL是否是目录,

var bURL = aURL.URLByAppendingPathComponent( "newString", isDirectory: true )

【讨论】:

注意这对路径组件字符串进行 url 编码 这也会在字符串之前添加一个斜杠。 在 Swift 3、Xcode 8.2.1 中,现在是:appendingPathComponent(_:)。 Docs.【参考方案3】:

如果你有一个指向目录的文件 NSURL,并且你想得到一个包含 NSURL 路径的 NSString 并附加一个文件名,使用这个:

NSURL *url = [NSURL fileURLWithPath:@"/System" isDirectory:YES];
NSString *filename = @"foo";
NSString *result = [url.path stringByAppendingPathComponent:filename];

您也可以使用URLByAppendingPathComponent,但这会增加一个额外的步骤,该步骤会创建一个不需要的额外 NSURL 对象。

NSURL *url = [NSURL fileURLWithPath:@"/System" isDirectory:YES];
NSString *filename = @"foo";
NSURL *newURL = [url URLByAppendingPathComponent:filename];
NSString *result = newURL.path;

【讨论】:

以上是关于将 NSString 附加到 NSURL?的主要内容,如果未能解决你的问题,请参考以下文章

NSString 到 NSurl

将变量附加到 NSURL

将 NSURL 转换为 NSString

无法使用类型为“(NSURL,*:NSString?)”的参数列表调用“*”

将NSURL转换为NSString

将文件路径从 NSString 转换为 NSURL