2010-10-28 2 views
0

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

В любом случае, я пытаюсь создать 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 является:
файл: // локальный/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, но имеет проблему после вывода.

ответ

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]; 

Фонд имеет множество независимых от платформы, пути, связанные с методами. Предпочитайте те, которые расположены над разделителями расширений канала жесткого кодирования (часто «.») И разделителями компонентов пути (часто «/» или «\»).

+0

Я боюсь, что это не сработает, путь создается отлично, но у URL-адреса такая же проблема – Septih

+0

Как вы это определили? Делает ли чтение в файле с помощью '+ [NSString stringWithContentsOfURL: usedEncoding: error:' work? Если нет, то какую ошибку он дает? –

+0

Это работает на самом деле. Возможно, это не тот путь, который виноват. Я попытаюсь получить ошибку из инициализации XMLDocument. – Septih

0

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

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

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

+0

Это не сработало. Опять же начальный NSString - это хорошо, но не URL. Что касается этой строки, я просто скопировал текст с консоли. – Septih

+0

Septih: Что вы напечатали на консоли, и как вы ее распечатали? –

+0

Этот код является частью единичного теста, поэтому я разбираюсь в своих строках STAssertTrue (условие, формат, ...), чтобы увидеть, что происходит, так что действительно линия выходит из консоли результатов сборки, когда сборка не выполняется , Фактически напечатанным является описание NSURL. – Septih

Смежные вопросы