Начиная с iOS9, stringByAddingPercentEscapesUsingEncoding
устарела. Чтобы безопасно экранировать строку URL, используйте:
NSMutableCharacterSet *alphaNumSymbols = [NSMutableCharacterSet characterSetWithCharactersInString:@"~!@#$&*()-_+=[]:;',/?."];
[alphaNumSymbols formUnionWithCharacterSet:[NSCharacterSet alphanumericCharacterSet]];
str = [str stringByAddingPercentEncodingWithAllowedCharacters:alphaNumSymbols];
При этом создаются наборы символов, которые остаются без изменений, и запрашивается преобразование всего, что находится за пределами этих наборов символов, в% -ные кодированные значения.