iOSアプリで、ネットからファイルをダウンロードして、ローカルに保存、その後、そのファイル名でローカルに保存した後、
ダウンロード済み判定の為に、if文で「isEqualToString」で判定した所、問題が発生した。
同じ文字列でファイル名にしたにも関わらず、「false」判定結果になっている。
簡単に説明
1.URLからファイル名を取得してローカルファイル名として、保存
http://example.com/なんらかのデータ.pdf
./Document/なんらかのデータ.pdf
2.それぞれのファイル名を再取得してif文判定
NSString *webFilename = %http://example.com/なんらかのデータ.pdf%・・・のbasename
NSString *localFilename = %./Document/なんらかのデータ.pdf%・・・のファイル名
if([localFilename isStringToString:webFilename]){
NSLog(@"true");
}
else{
NSLog(@"false");
}
結果は「false」となった・・・
原因解明
どうやら、webから取得したstringデータとローカルに保存されたファイル名のフォントデータが違うらしく、stringでは同じのはずが、文字コードが違っているようだ。
詳しくは
ココのページに書かれているが、どうやら、「compareメソッド」をしたほうが都合がいいらしい。
※濁点文字などの文字コードが違っているとの事だ。
コード
if([localFilename compare:webFilename] == NSOrderedSame){
NSLog(@"true");
}
else{
NSLog(@"false");
}
無事に「true」で判定されるようになりました。
テキストデータにまで書き出して確認してみたが、見た目の文字列は同じなのに、確かに検索でヒットしないという結果だったので、ひとつ勉強になった件でした。
0 件のコメント:
コメントを投稿