NSURL fileURLWithPath, где NSString имеет пробел - PullRequest
0 голосов
/ 28 октября 2010

Я рассмотрел довольно много связанных вопросов и не могу найти аналогичную проблему или решение, поэтому приношу свои извинения, если где-то есть дубликат.

В любом случае, я пытаюсь сгенерировать 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/"

с той же проблемой. Я также попытался полностью напечатать URL-адрес файла и использовать [NSURL URLWithString:]

Я также пытался использовать stringByAddingPercentEscapesUsingEncoding как с NSUTF8Encoding, так и с NSASCCIEncoding, и они имеют ту же проблему.

NSString отображается правильно перед передачей в NSURL или stringByAddingPercentEscapesUsingEncoding, но имеет проблему, однажды выведенную из любого из них.

Ответы [ 2 ]

1 голос
/ 28 октября 2010

Попробуйте это:

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 содержит множество платформо-независимых методов, связанных с путями. Предпочитайте их жестким кодам разделителей расширений пути (часто «.») И разделителей компонентов пути (часто «/» или «\»).

0 голосов
/ 28 октября 2010

Попробуйте отказаться от stringWithFormat: (никогда не будет правильного ответа для сшивания путей вместе) и stringByExpandingTildeInPath и используйте вместо них NSHomeDirectory() и stringByAppendingPathComponent:.

  • @ "~ / SP \\ BB /" (изменяется на SP 엀 2B)

Как вы пришли к такому выводу?

...