前2回は文字列エンコーディングを指定してNSStringからC文字列を取り出す方法を見てきました。
その中で、エンコーディングによってはNSStringに格納されている文字列情報を変換できずにC文字列の取得に失敗する場合があるという話がありました。文字列中に変換できない文字があったとしても他の文字は変換可能ですので、変換できない文字1つのために取得できる情報がゼロというのも困った物です。その場合にどうすればいいのかを見てみたいと思います。
その前に、C文字列が取得できなかった原因がメモリ不足など他の原因ではないことを確認するメソッドがあります。
- (BOOL)canBeConvertedToEncoding:(NSStringEncoding) encoding
これは指定されたエンコーディング(その1で例示しています)に情報の欠落なしに、ということは全ての文字を変換可能かどうかを返します。YESであれば変換可能。NOであれば変換不能。つまりここでNOが返ってくれば前回までのメソッドではC文字列を取得できないことがわかります。
続きを読む

