1

次の行は、エミュレーターでは完全に正常に機能しますが、実際のデバイスでは機能しません。エラーが表示されます:fatal error: unexpectedly found nil while unwrapping an Optional value

var urlData:NSData = NSURLConnection.sendSynchronousRequest(request, returningResponse:&response, error:&error)!

別のプロジェクトのオリジナルに!は最後に がありませんでした。ベータ 5 では 100% 動作しましたが、現在はベータ 6 で、入れないとエラーがスローされます。エミュレータではまだ動作しますが、iPhone では動作しませんか?

何か案は?

4

1 に答える 1

1

デバイスで実行すると、アプリに何か問題があるに違いないと思います (接続先の URL/IP など)。

そのエラーがスローされた場合、それsendSynchronousRequestは nil を返すことを意味します。私のアドバイスは次のとおりです。

  • urlDataオプションにしてvar urlData: NSData? = ...、後で値があるかどうかを確認します
  • 接続しているサーバー、および/またはリクエストのパラメーターが正しいことを確認してください

nil になる可能性のある値に対して強制的なアンラップを使用しないことが非常に重要です。それは常に実行時エラーを生成するので、私はそれを悪い習慣だと考えています。オプションのバインドを使用せずに明示的にチェックした場合など、オプションに値があることが 100% 確実な場合にのみ、強制アンラップを制限する必要があります。

サーバー/リクエストのチェックに関しては、シミュレータで実行している場合はローカルの開発サーバーにリクエストを送信し、デバイスを使用している場合は本番またはステージングのリモート サーバーにリクエストを送信することがよくあります。コードで似たようなことをしているのかもしれません。

于 2014-08-31T15:23:50.037 に答える