1

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

无论如何,我正在尝试生成文件的 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 中的结果路径是:
file://localhost/Users/timothyborrowdale/SP2B/Localizable.strings

我尝试将 PROJECT_DIR 更改为

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

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

我也尝试过使用stringByAddingPercentEscapesUsingEncodingNSUTF8Encoding 和 NSASCCIEncoding ,它们有同样的问题。

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

4

2 回答 2

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

于 2010-10-28T15:11:06.897 回答
0

尝试放弃stringWithFormat:(永远不会将路径钉在一起的正确答案)stringByExpandingTildeInPath并使用NSHomeDirectory()andstringByAppendingPathComponent:代替。

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

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

于 2010-10-28T15:09:32.357 回答