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

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

谢谢。

【问题讨论】:

    标签: objective-c macos nsstring append 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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-05
      • 2011-12-26
      • 1970-01-01
      相关资源
      最近更新 更多