アプリケーションの iPhone バージョンとデスクトップ バージョンの間のネットワークでは、iPhone はデスクトップで使用するデバイス名を送信します。問題は、一部のベータ テスターのデバイス名にチルダ (`) が含まれていることです。何らかの理由で、これがデバイス名に含まれていると、ソケットが実際の文字列データを送信できなくなります。
送信する前にデバイス名を単純にクリーンアップしようとしましたが、デバイス名のチルダ (iTunes に入力されたもの) が実行時にチルダとして認識されません。動作しないコードは次のとおりです。
NSString *safedevicename = [[UIDevice currentDevice] name];
safedevicename = [safedevicename stringByReplacingOccurrencesOfString:@"`" withString:@"'"];
チルダは検出されず、何も置換されません。またrangeOfString
、チルダを検索することもありましたが、何も返されません。少なくとも iTunes に入力されている文字はチルダであると 100% 確信しています。
また、文字列の説明をコンソールに出力する場合、文字は としてエンコードされ\u00b4
、変数の上にカーソルを置くとピリオドとして表示されます.
。
このキャラクターをつかんでそこから出す方法を知っている人はいますか? また、Objective C で文字列をより簡単にクリーンアップして、ソケット経由で安全に送信できるようにする方法はありませんか?
編集: NSString を NSOutputString に書き込むには、次のコード行を使用します。
len = [oStream write:[[writeString dataUsingEncoding:NSASCIIStringEncoding] bytes] maxLength:[writeString lengthOfBytesUsingEncoding:NSASCIIStringEncoding]];
編集#2:このコード行はチルダを置き換えるために機能しますが、心配すべき他の文字があると確信しています:
safedevicename = [safedevicename stringByReplacingOccurrencesOfString:@"\\u00b4" withString:@"'"];