URL -кодирование строки в iOS сбой
-
26-10-2019 - |
Вопрос
Я пытаюсь URL кодировать строку в моем приложении iOS 5 с помощью ARC.
Вот как я это делаю:
- (NSString *)escape:(NSString *)text
{
return (__bridge NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,
(__bridge CFStringRef)text, NULL,
(CFStringRef)@"!*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8);
}
Затем я называю это с помощью тестовых данных, как это:
NSLog([self escape:@"kalel///&&&???"]);
Но вывод, который я получаю от NSLog
это:
kalel0.0000000.0000000.00000022623F0.0000000.000000
Это просто не кажется правильным, но независимо от того, что я не могу сделать правильно
Решение
Ваш escape
функция в порядке. Проблема в том, как вы звоните NSLog
:
escape
производит строку kalel%2F%2F%2F%26%26%26%3F%3F%3F
для вашего ввода. NSLog
интерпретирует эту строку как строку формата и печатает немного мусора в виде номеров с плавающей запятой сразу после kalel
слово!
Вы всегда должны звонить NSLog
с константой строки в качестве первого аргумента, например:
NSLog(@"%@", [self escape:@"kalel///&&&???"]);
Пса У вас есть утечка памяти escape
--- вам следует return (__bridge_transfer NSString *)
По мере того, как вы передаете сохраняемый объект CF в объективное пространство C.