2016-07-14 4 views
0

私はWatchOSのための新しいアプリを開発していますが、アプリはシミュレータ上で正常に動作しますが、エラーログなしで実際のデバイスでクラッシュします。最初に私はそれが私の時計にあり、レビューのためにアプリを提出したと思って、それが実際のデバイスでクラッシュしたので却下されました。時計のコードは本当にシンプルで、HTTPリクエストを送信するだけです。それだけです。手元にApple時計アプリがデバイスで動作していません

override func willActivate() { 
     // This method is called when watch view controller is about to be visible to user 

     let request = NSURL(string: "[MY SERVER URL]") 
     var response = try! String(contentsOfURL: request!) 

     if response == "X"{ 
      response = ":D" 
     } 

     watch_text.setText(response) 

     super.willActivate() 
    } 
+0

ただ推測すると、インターネットに接続していますか?おそらく、正しく初期化されていないと応答が無効になるので、 'watch_text'のテキストとして" nil "を割り当てているため、クラッシュするでしょう。 – ddb

+0

はい、私もApple Reviewチームもインターネット接続を持っていると思います。 – user897234

答えて

0

2つの問題:

  • アプリ

    あなたはwillActivate()で同期ネットワーク要求を行うこと、およびUIをブロックしているブロッキング。ユーザーはアプリの読み込みを待機していますが、ネットワークリクエストが完了するか失敗するまでに長時間待たなければならない場合があります。

    これは否定的な経験に加えて、の場合、オペレーティングシステムがどのようにプロセスを停止させるかを考慮していないため、とみなされます。

    use NSURLSession to load your URLを入力し、完了ハンドラにラベルを設定します。

  • フォースアンラップと無視エラー

    あなたが代わりに無視してエラーと力アンラップoptionalsの、エラーやnilのoptionalsを処理する必要があります。

    いつでも!が表示されますが、あなたが処理しなかった不測の事態が発生した場合、コードがクラッシュする可能性があると考えてください。

私はそれが私の時計に

あり得ることを考えて、それはあなたの時計に動作しない場合、それはおそらく別の時計では動作しません。

何かがうまくいかない場合(期待どおり)、時計のハードウェアの問題ではなく、ソフトウェアの問題(コード付き)の可能性がはるかに高いです。

+0

私のコードを変更しました非同期に、私はあなたにアプリが受け入れられるかどうかを知らせます。 – user897234

+0

アップルの査読者はあなたのアプリをベータテストすることはできません。 testflightや別のサービスを使用して、ユーザーがApp Storeに提出する前にフィードバック*を提供する必要があります。 –

関連する問題