デバイスはファイル名の大文字小文字を区別するのでそれを確認することと、リソースが転送されてない可能性があるのでデバイスからアプリを消して、クリーンして再ビルドしてみたらたいていは直るんじゃないでしょうか。
解決策は2つ。
- シミュレータはファイル名の大文字小文字を区別しないが実機では区別する
大文字小文字をキチンと使い分ける。 - リソースがちゃんと転送されていないのではないか?
デバイスからアプリを消して Xcode で一度クリーンしてから再ビルドしてみる。
シミュレータは大文字小文字を区別しない
これは以下の条件に合致する場合に問題になります。
- リソースとして例えば picture.JPG というファイルを持っている。
- コード内で例えば picture.jpg というファイル名でリソースを読み込んでいる。
この場合、シミュレータでは動作しますが、デバイスでは大文字小文字を区別するのでファイルが見つからずにこの picture.JPG は表示されません。
リソースがちゃんと転送されない
これは、画像、ローカライズで使うテキストファイル、アプリケーションのローカライズ名等のリソースで起きる問題です。
デバイスだけでなくシミュレータでも新しい物に置き換わらず、古いリソースのまま表示されることがあります。
そんな時には
- Simulator および実機からアプリケーションを削除
- Xcode で Clean を実行
を行ってから確認するとちゃんと新しいリソースになっています。