問題タブ [nsurlsessiondatatask]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - NSURLSessionDataTask タイムアウト以降のリクエストが失敗する
私は作成していNSMutableRequest
ます:
タイムアウトは 10 秒に設定されています。これは、ユーザーがフィードバックを得るのにあまり長く待たされたくないためです。その後、次を作成しますNSURLSessionDataTask
。
問題は、サーバーがゲートウェイ タイムアウトになり、時間がかかることです。タイムアウト エラーが発生し、ユーザーにフィードバックしますが、タイムアウト エラーが原因で、次の API 呼び出しはすべて同じように失敗します。それを止める唯一の方法は、アプリを強制終了して最初からやり直すことです。タイムアウト エラーの後にタスクまたは接続を強制終了するために何かすべきことはありますか? タイムアウトを設定せず、サーバーからエラー コードを受信するまで待機すると、次のすべての呼び出しが完全に機能します (ただし、ユーザーはかなり待機します!)。
タスクをキャンセルしようとしました:
ios - セマフォを使用して非同期呼び出しから値を返す
NSURLSession
ネットワーク通話を行うために使用する必要があります。特定の事柄に基づいて、応答を受け取った後、NSError
オブジェクトを返す必要があります。
セマフォを使用して、非同期呼び出しを同期的に動作させています。問題は、エラーが呼び出し内で適切に設定されることですが、セマフォが終了するとすぐに (
dispatch_semaphore_wait(セマフォ, DISPATCH_TIME_FOREVER);
)、 はerr
ゼロになります。
助けてください
コード:
ios - サーバーからjsonオブジェクトを削除するには?
サーバーから JSON の形式でレシピを取得し、それを UItable に表示するコードを作成します。
このサーバーは Ruby で書かれています。ここで、レシピを削除するリクエストを書きたいと思います。これが私のサーバーの指示です。レシピを削除するには、次のcurlを使用する必要があると言われました。
レシピを削除 DELETE: /recipes/:id Curl では次のようになります。
delete メソッドを実装したいと思います。実際、次のメソッドを実装する必要があることはわかっていました。
delete メソッドを実装する方法を知っている人はいますか?
ios - HTTP データ タスク (NSURLSessionDataTask) の NSURLSession はバックグラウンド スレッドで実行されますか、それともキューを提供する必要がありますか?
Appleが提供する新しく洗練されたAPIであるため、今ではNSURLSession
避けて使い始めました。NSURLConnection
以前は、呼び出しNSURLRequest
をGCD
ブロックに入れてバックグラウンドで実行していました。これが私が過去に行っていた方法です:
さて、これが私がどのように使用するかですNSURLSession
:
私のリクエストはバックグラウンド スレッド自体で実行されるのNSURLRequest
か、それとも .
nsurlrequest - NSURLRequest タイムアウト値は NSURLSessionConfiguration timeoutIntervalForRequest 値をオーバーライドしますか?
timeoutIntervalForRequest
構成 = 120 秒で NSURLSession オブジェクトを作成しています。この後、NSURLSessionDataTask
オブジェクトを作成してメソッドを呼び出していますdataTaskWithRequest:completionHandler
。ここで、1 つの入力パラメーターはNSURLRequest
です。ここでも NSURLRequest を作成するときに、timeout、cachePolicy などのいくつかのパラメーターを指定できますNSURLSessionConfiguration
。では、 a に異なる値を使用するとNSURLRequest
、それらの値は値を上書きしNSURLSessionConfiguration
ますか?
ios - NSURLSessionDataTask キャンセルとコア データ
サーバーから新しいユーザープロファイルをダウンロードし、プロファイルごとに写真の配列をダウンロードし、コアデータに保存するNSURLSessionがあります。ユーザーがこの画面に到達するたびに、タスクのダウンロードを停止し、コアデータをクリアしてから、再度入力します。問題は、cancel() 関数が非同期であるため、Core Data をクリアした後にいくつかのプロファイルを保存できることです。さらに、これらのプロファイルは、datatask cancel のおかげで一部のデータがなくてもかまいません。それで、問題は次のとおりです-ダウンロードタスクを正しく完了し、その後コアデータをクリアする方法は?前もって感謝します。
unit-testing - OCMock - [NSURLSessionDataTask 応答] iOS 9 で認識されないセレクターがクラッシュする
問題
多くの単体テストでは、モック オブジェクトに OCMock を使用しています。コードがサーバーの応答にどのように応答するかを確認するテストの一環として、NSURLSessionDataTask オブジェクトを作成し、後で「応答」プロパティを使用してみます。
プロットが厚くなる
iOS 9 より前では、テストは問題なく実行されていました。このプロパティは、iOS 9 のアプリの通常のコールバック フローでも正しく機能します。
ただし、iOS 9 ベータ版では、実行時に「認識されないセレクターがインスタンスに送信されました」というエラーでテストがクラッシュします。このプロパティはフレームワーク ヘッダーに存在し、ドキュメントでは削除済みとしてマークされていません。
このサンプル コードは、問題を示しています。
理論
クラスの直接のインスタンス化は、実行時にプロパティを提供しなくなったようです。プロパティは、@dynamic
インスタンス化の別のパスを使用して実行時に生成されるプロパティのようです。
質問
iOS 8 での単体テストの実行と下位互換性がある方法で、OCMock オブジェクトの単体テストでこの問題を回避するにはどうすればよいですか?
更新 1
OCMock を最新 (3.1.5) に更新しても問題は解決しません。
追加のコンテキストとして、NSURLSessionDataTask
OCMock を使用する方法を次に示します。テストは 3 行目で失敗します。