Вы можете попробовать декодировать строку и посмотреть, являются ли исходная строка и расшифрованная строка одинаковыми или нет. Если они одинаковы, то они еще не закодированы.
NSString *original = product.url;
NSString *decoded = [original stringByReplacingPercentEscapesUsingEncoding:NSUTF8Encoding];
if ([original isEqualToString:decoded]) {
// The URL was not encoded yet
NSString *encodedUrlString=[[product url] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
} else {
// The URL was already encoded
}
BTW - эти методы устаревшая прошивки 9, так что если развертывание Target вашего приложения является IOS 9.0 или более поздней версией, вы должны использовать новые методы.
Для прошивки 9 или более поздняя версия, вы должны использовать:
NSString *original = product.url;
NSString *decoded = [original stringByRemovingPercentEncoding];
if ([original isEqualToString:decoded]) {
// The URL was not encoded yet
NSString *encodedUrlString=[[product url] stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet alphanumericCharacterSet]];
} else {
// The URL was already encoded
}
Спасибо за ответ, моя целью была для прошивки 9.o – user1805608
Я обновил ответ на использование более новый API. – rmaddy
Имейте в виду, что вы не должны кодировать весь URL-адрес. Вы должны кодировать только те части, которые нуждаются в кодировании. Обычно это значения параметров URL-запроса. Это всегда было так. – rmaddy