В сети между версиями нашего приложения для iPhone и настольного компьютера iPhone отправляет имя устройства для использования на рабочем столе. Проблема в том, что некоторые из бета-тестеров имеют тильды (`) в именах своих устройств. По какой-то причине, когда это имя устройства, оно не позволяет сокету отправлять фактические строковые данные.
Я пытался просто очистить имя устройства перед отправкой, но тильда в имени устройства (как введено в iTunes) не распознается во время выполнения как тильда. Вот код, который не работает:
NSString *safedevicename = [[UIDevice currentDevice] name];
safedevicename = [safedevicename stringByReplacingOccurrencesOfString:@"`" withString:@"'"];
Не находит тильды и ничего не заменяет. Я также использовал rangeOfString
для поиска тильд, и он ничего не возвращает. Я на 100% уверен, что персонаж, по крайней мере, так как он введен в iTunes, является тильдой.
Кроме того, при выводе описания строки на консоль символ кодируется как \u00b4
, а при наведении курсора на переменную он отображается в виде периода .
.
Кто-нибудь знает, как я могу схватить этого персонажа и вытащить его оттуда? Кроме того, разве в цели C нет способа упростить очистку строки, чтобы гарантировать ее безопасную отправку через сокет?
EDIT:
Также кое-что, что может быть полезно, чтобы записать NSString в NSOutputString, я использую следующую строку кода:
len = [oStream write:[[writeString dataUsingEncoding:NSASCIIStringEncoding] bytes] maxLength:[writeString lengthOfBytesUsingEncoding:NSASCIIStringEncoding]];
РЕДАКТИРОВАТЬ # 2:
Эта строка кода работает для замены тильды, но я уверен, что есть другие символы, о которых я должен беспокоиться:
safedevicename = [safedevicename stringByReplacingOccurrencesOfString:@"\\u00b4" withString:@"'"];