[Objective-C] 文字列比較でisEqualToStringで同一判定できない事象が発生

compare-643305_1280
LINEで送る
Share on GREE
Share on LinkedIn

iOSアプリで、ネットからファイルをダウンロードして、ローカルに保存、その後、そのファイル名でローカルに保存した後、
ダウンロード済み判定の為に、if文で「isEqualToString」で判定した所、問題が発生した。

同じ文字列でファイル名にしたにも関わらず、「false」判定結果になっている。

簡単に説明

1.URLからファイル名を取得してローカルファイル名として、保存

http://example.com/なんらかのデータ.pdf

./Document/なんらかのデータ.pdf

2.それぞれのファイル名を再取得してif文判定

結果は「false」となった・・・

原因解明

どうやら、webから取得したstringデータとローカルに保存されたファイル名のフォントデータが違うらしく、stringでは同じのはずが、文字コードが違っているようだ。
詳しくはココのページに書かれているが、
どうやら、「compareメソッド」をしたほうが都合がいいらしい。
※濁点文字などの文字コードが違っているとの事だ。

コード

無事に「true」で判定されるようになりました。
テキストデータにまで書き出して確認してみたが、見た目の文字列は同じなのに、確かに検索でヒットしないという結果だったので、ひとつ勉強になった件でした。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*