2015-10-30 4 views
-1

Как определить NSString, который уже закодирован или нет.?Проверка NSString закодирована или нет

Я кодирую свою строку, как показано ниже. Перед кодированием я просто хочу проверить погоду, это [product url] уже закодировано или нет.

NSString *encodedUrlString=[[product url] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

ответ

4

Вы можете попробовать декодировать строку и посмотреть, являются ли исходная строка и расшифрованная строка одинаковыми или нет. Если они одинаковы, то они еще не закодированы.

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 
} 
+0

Спасибо за ответ, моя целью была для прошивки 9.o – user1805608

+0

Я обновил ответ на использование более новый API. – rmaddy

+0

Имейте в виду, что вы не должны кодировать весь URL-адрес. Вы должны кодировать только те части, которые нуждаются в кодировании. Обычно это значения параметров URL-запроса. Это всегда было так. – rmaddy

Смежные вопросы