NSURL fileURLWithPath NSString有空格

时间:2010-10-28 14:33:59

标签: objective-c cocoa nsstring nsurl

我查看了很多相关问题,找不到类似的问题或解决方案,所以如果某处有重复,我会道歉。

无论如何,我正在尝试生成一个文件的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之前正确显示,但一旦输出就会出现问题。

2 个答案:

答案 0 :(得分: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拥有许多与平台无关的路径相关方法。优先选择硬编码路径扩展分隔符(通常为“。”)和路径组件分隔符(通常为“/”或“\”)。

答案 1 :(得分:0)

尝试放弃stringWithFormat:(永远不是正确的拼写路径答案)和stringByExpandingTildeInPath并使用NSHomeDirectory()stringByAppendingPathComponent:代替。

  
      
  • @“〜/ SP \\ BB /”(更改为SP엀2B)
  •   

你是如何得出这个结论的?