【问题标题】:NSURL fileURLWithPath where NSString has a spaceNSURL fileURLWithPath 其中 NSString 有一个空格
【发布时间】:2010-10-28 14:33:59
【问题描述】:

我查看了很多相关问题,但找不到类似的问题或解决方案,因此如果某处有重复,我深表歉意。

无论如何,我正在尝试生成文件的 NSURL 以与 NSXMLDocument 一起使用。我有以下组件:

const NSString * PROJECT_DIR = @"~/SP\\ BB/";
const NSString * STRINGS_FILE = @"Localizable.strings";

并像这样构造 URL:

NSURL * stringsURL = [NSURL fileURLWithPath:[[NSString stringWithFormat:@"%@%@",PROJECT_DIR,STRINGS_FILE] stringByExpandingTildeInPath]];

但是,NSURL 中的结果路径是:
文件://localhost/Users/timothyborrowdale/SP2B/Localizable.strings

我已尝试将 PROJECT_DIR 更改为

@"~/SP BB/"
@"~/SP\\\\ BB/" (changes to SP엀2B)
@"~/SP%20BB/"
@"~/SP\%20BB/"

同样的问题。我还尝试完全输入文件网址并使用[NSURL URLWithString:]

我也尝试过将stringByAddingPercentEscapesUsingEncoding 与 NSUTF8Encoding 和 NSASCCIEncoding 一起使用,它们有同样的问题。

NSString 在被传递给 NSURL 或 stringByAddingPercentEscapesUsingEncoding 之前正确显示,但是一旦从其中一个输出时就会出现问题。

【问题讨论】:

    标签: objective-c cocoa nsstring nsurl


    【解决方案1】:

    试试这个:

    NSString *fnam = [@"Localizable" stringByAppendingPathExtension:@"strings"];
    NSArray *parts = [NSArray arrayWithPathComponents:@"~", @"SP BB", fnam, (void *)nil];
    NSString *path = [[NSString pathWithComponents:parts] stringByStandardizingPath];
    NSURL *furl = [NSURL fileURLWithPath:path];
    

    Foundation 有许多独立于平台的、与路径相关的方法。比硬编码路径扩展分隔符(通常是“.”)和路径组件分隔符(通常是“/”或“\”)更喜欢那些。

    【讨论】:

    • 恐怕不行,路径创建得很好,但是url有同样的问题
    • 您是如何确定的?使用+[NSString stringWithContentsOfURL:usedEncoding:error: 读取文件有效吗?如果不是,它给出了什么错误?
    • 这确实有效。也许这不是错误的路径。我将尝试从 XMLDocument init 中获取错误。
    【解决方案2】:

    尝试放弃stringWithFormat:(永远不是将路径装订在一起的正确答案)和stringByExpandingTildeInPath,而改用NSHomeDirectory()stringByAppendingPathComponent:

    • @"~/SP\\ BB/"(更改为 SP엀2B)

    你是怎么得出这个结论的?

    【讨论】:

    • 那也没用。同样,初始 NSString 很好,但不是 url。关于那一行,我只是从控制台复制了文本。
    • Septih:您在控制台上打印了什么,您是如何打印的?
    • 这段代码是单元测试的一部分,所以我正在用我的 STAssertTrue(condition,format,...) 行来看看发生了什么,所以真的这条线来自构建失败时的构建结果控制台。实际打印的项目是 NSURL 描述。
    猜你喜欢
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 2012-04-05
    • 2011-12-05
    • 2012-08-06
    • 2015-11-28
    • 2016-07-28
    相关资源
    最近更新 更多