stringByAppendingPathComponent, как это - работа?

У меня была та же самая ошибка; но ~/.gitconfig глобальный файл конфигурации был ключом.

, Если у Вас есть прокси с аутентификацией, необходимо вставить ее:

git config --global http.proxy http://login:password@our-proxy-server:8088

И это просто работает (с' git clone http:')

Пример блога, детализирующего ту же установку: клон МЕРЗАВЦА по HTTP: кто знал?

, Если это все еще перестало работать в 407, это могло бы быть связано с проблемой с , выборка мерзавца, теряющая аутентификационные маркеры на втором HTTP, ДОБИРАЕТСЯ . более поздняя версия libcurl могла бы быть необходима.

январь 2011 Обновления: jbustamovej упоминает в [1 110] его ответ (upvoted) его сообщение в блоге" GitHub Позади Корпоративного Прокси ", который добавляет это:

It’s важный, чтобы отметить, что , если Ваш вход в систему имеет обратную косую черту , как в domain\login, , необходимо выйти из обратной косой черты , как в:

git config --global http.proxy http://domain\\\login:password@our-proxy-server:8088

9
задан fuzzygoat 29 September 2009 в 09:40
поделиться

6 ответов

stringByAppendingPathComponent, как это работает?

Просто. Вы хотите добавить компонент пути. Вы отправляете это сообщение в строку, к которой хотите добавить компонент пути, передавая компонент пути, который вы хотите добавить.

Компоненты пути не являются косой чертой; в противном случае метод pathComponents не вернул бы ничего, кроме массива косых черт. Компоненты пути - это части между косой чертой (хотя есть особый случай, описанный в определении pathComponents ).

Косая черта - это разделитель пути . Это жестко запрограммировано внутри Какао; это в настоящее время (и, вероятно, всегда будет) косая черта. Итак, если вы действительно хотите добавить косую черту к строке,

  [newPath setString: rootPath];
 [newPath appendString: @ "/"];
 [newPath appendString: имя_файла];

fileName - это компонент, который вы хотите добавить. Используйте stringByAppendingPathComponent: и передайте fileName , а не косую черту.

Что касается утечек в вашем примере: хорошо, выпадает ли объект из области действия, не будучи освобожденным? Ответ на этот вопрос - ответ на вопрос, утечка ли это. Если вы не уверены, просмотрите правила управления памятью .

15
ответ дан 4 December 2019 в 07:47
поделиться

Во всех существующих ответах утечка исходного testPath строка. Для чего-то такого простого, почему никто не рекомендовал - [NSMutableString appendString:] intead?

[testPath appendString:@"/"];

Нет эквивалента -stringByAppendingPathComponent: для NSMutableString, но похоже, что он просто пытаюсь добавить косую черту, а не компонент пути. Если вы действительно хотели добавить компонент пути, вы можете сделать это:

[testPath setString:[testPath stringByAppendingPathComponent:@"..."]];

Это неприятный обходной путь, но, как указывает @dreamlax, -stringByAppendingPathComponent: всегда возвращает неизменяемую строку, даже когда вызывается для объекта NSMutableString. : - (

5
ответ дан 4 December 2019 в 07:47
поделиться

Вы не добавляете разделитель. Вы добавляете следующий компонент пути (например, имя файла, каталог и т. Д.). Это избавляет вас от необходимости знать разделитель для вашей конкретной системы.

NSMutableString* mutablePath = [NSMutableString string];
NSString* fullPath = [rootPath stringByAppendingPathComponent:filename];

[mutablePath setString:fullPath]; // OK to setString: of Mutable with non-Mutable
[mutablePath appendString:someOtherString]; // This won't cause an exception

// Example to clarify on comments below
{
    // This will cause a compiler warning.
    // warning: incompatible Objective-C types assigning
    //    ‘struct NSString *’, expected ‘struct NSMutableString *’
    NSMutableString* ms = [@"FOO" stringByAppendingPathComponent:@"BAR"];
}

В документации есть довольно ясный пример.

5
ответ дан 4 December 2019 в 07:47
поделиться

-stringByAppendingPathComponent возвращает новую неизменяемую строку, она не изменяет исходную. Вы должны использовать возвращаемое значение этого метода.

2
ответ дан 4 December 2019 в 07:47
поделиться

Последняя строка должна быть:

testPath = [testPath stringByAppendingPathComponent:@"/"];
1
ответ дан 4 December 2019 в 07:47
поделиться
[testPath stringByAppendingString:@"/"]
0
ответ дан 4 December 2019 в 07:47
поделиться