眺めてたら、NSStringの文字列比較にcompare:メソッドを使っていて「あれisEqualToStringじゃないの?」って思ったので調べてみたら意外と重大な事実が判明しました。isEqualToStringはNSLiteralSearchオプションによる比較なので、見かけ上同じ文字列だったとしてもバイト列が異なる場合はNOを返すらしい。うはー、こんな基本的なことを知らなかったとか恥ずかしいです。以下のコードの場合ですとisEqualToStringは通りませんが、compare:はNSOrderedSameを返すので真になります。NSLog(@"compare");stringAが「パズドラ」という文字で、stringBは濁点と半濁点が分離した文字になっています。この分離文字を扱ってるので、結構おなじみかもしれません。内蔵ストレージに保存した濁点付きの文字列の比較がうまくいかなくて困った経験がありました。その時は分離した文字列をくっつけるように変換して対処しましたが、compare:使うのが正解だったのか!!参考までにSkyBookでやったやり方はこちら。NSLog(@"great!!");これだとgreat!!と出力されます。勉強をしながらソフト開発をしているオレの記録。