Базовая ошибка в stringByAppendingPathComponent? - PullRequest
2 голосов
/ 06 апреля 2011

Я попробовал следующую строку в приложении iOS и в инструменте Foundation:

[@"http://www.apple.com/" stringByAppendingPathComponent:@"/"]

Каждый раз, когда я получаю результат:

@"http:/www.apple.com"

Другими словами, stringByAppendingPathComponent, в дополнение к тому, что ничего не добавляется (что я ожидал), глотает последние / (что можно считать ОК, вроде), и глотает одну из схем URL/, что совершенно не ОК в моей книге.

Это происходит только со мной?Я что-то упустил до того, как отправил отчет об ошибке?

1 Ответ

3 голосов
/ 06 апреля 2011

Прежде всего, обратите внимание на документацию для stringByAppendingPathComponent::

Обратите внимание, что этот метод работает только с путями к файлам (не, например, для строковых представлений URL).

Таким образом, вы используете метод для случая, который не предназначен для поддержки.

Использование его с путем к файлу показывает то же поведение, хотя:

[@"/abc/" stringByAppendingPathComponent:@"/"];     // -> @"/abc"
[@"/abc/" stringByAppendingPathComponent:@"/def/"]; // -> @"/abc/def"

Так чтоКажется, что метод всегда предпочитает пути, которые не заканчиваются косой чертой, независимо от того, была ли косая черта частью исходного пути или аргумента.Хотя я не знаю, назову ли я это ошибкой.В конце концов, и 1013 *, и /abc/ указывают на один и тот же элемент в файловой системе, не так ли?

Но, похоже, точное поведение может быть задокументировано лучше.

...