2017-09-23 16 views
0
let myPath = Bundle.main.path(forResource: "Settings", ofType: ".png") 

print(myPath!) 

これを印刷しようとするとクラッシュするのはなぜですか?Swift:印刷時のクラッシュ

+0

ですそれはあなたをすることができます(ほとんどの場合)存在するかしませんかそれを構築しますが、電話機でアクセスするとクラッシュします。 –

+0

オプションのmyPathオブジェクトのアンラップを強制しています。実際にはこれがnilであっても印刷しようとしています。なぜイメージのパスが必要ですか? – Glenn

答えて

4

クラッシュは有名です予期しない見つかりましたnilアンラッピング中...エラー。値がnilでないことが保証されない限り、感嘆符を使用しないでください。

ファイルがタイプ(拡張子)がpngない.png

let myPath = Bundle.main.path(forResource: "Settings", ofType: "png") 

しかし、最近URL関連APIが望ましい

let myURL = Bundle.main.url(forResource: "Settings", withExtension: "png") 
+3

'Bundle.main.url(またはpath)の結果を強制的に展開する必要があると主張することができます。なぜなら、そこに存在すると予想されるファイルをロードしようとしているからです。ファイルが存在しない場合は、プロジェクト(またはタイプ)の設定に問題があり、アプリケーションをすぐにクラッシュさせてプロジェクトの問題(またはタイプミス)を修正できるようにします。 – rmaddy

1

私の単純な推測では、myPathはnilであるため、nilポインタ例外でクラッシュします。感嘆符を削除して使用してください:

print(myPath) 

もしnilが表示されたら、答えがあります。

+0

なぜそれがゼロであるか知っていますか? –