Сигнатура метода String
на процент-экранирования является:Почему возвращаемое значение String.addingPercentEncoding() необязательно?
func addingPercentEncoding(withAllowedCharacters: CharacterSet)
-> String?
(Это было stringByAddingPercentEncodingWithAllowedCharacters
в Swift 2.)
Почему этот метод возвращает необязательный?
В документации сказано, что метод возвращает ноль «если преобразование не представляется возможным», но неясно, при каких обстоятельствах побега преобразование может не:
символы экранируются с помощью UTF-8, который полная кодировка Unicode. Любой допустимый символ Юникода может быть закодирован с использованием UTF-8 и, таким образом, может быть экранирован.
Я подумал, что, возможно, метод применил какую-то проверку здравомыслия для плохих взаимодействий между набором разрешенных символов и символов, используемых для экранирования, но это не так: метод преуспевает независимо от того, установлен ли набор разрешенных символов содержит «%», а также успешно, если разрешенный набор символов пуст.
В его нынешнем виде необязательное возвращаемое значение, по-видимому, вызывает неудобную проверку ошибок.