11

5.0 がリリースされ、Apple の NDA に違反することなく議論できるようになった今、新しいバージョンの NSURLConnection に問題があります。NSURLConnectionDownloadDelegateこれには、 2 つの主要なメソッドを持つ新しいデリゲートがあります。

  1. connection:didWriteData:totalBytesWritten:expectedTotalBytes:ファイルのダウンロードの進行中に繰り返し呼び出される

  2. connectionDidFinishDownloading:destinationURL:ダウンロードが完了すると一度呼び出されます。

ダウンロードされたファイルは、destinationURL にあるはずです (少なくともこのメソッドの存続期間中 - 目的は、ファイルを取得して永続的な場所に移動することです)。問題は次のとおりです。そこにはありません。そのディレクトリは空です。これをバグとして Apple に報告したところ、Apple はすでに認識している問題と重複しているとのことでした。

誰かがこれに対する回避策を持っている場合、またはこのデリゲートを正常に使用できることがわかった場合は、お知らせください。

UPDATE 10/17/2011 : 私はこれをあきらめて、5.0 でも問題なく動作する古いデリゲートに戻りました。

4

4 に答える 4

4

どうやらNewsstandアプリでのみ使用するためです。この男は回避策を見つけたかもしれません:

http://adamernst.com/post/18948400652/a-replacement-for-nsurlconnectiondownloaddelegate

または、NSURLConnectionを使用することもできます。ただし、NSURLDownloadDelegateメソッドを実装すると、標準のNSURLConnectionデリゲートメソッドをオーバーライドするように見えます。UIProgressViewを更新するなど、必要なNSURLConnectionDownloadDelegateの便利なdidWriteData:メソッドの場合は、http応答から合計ファイルサイズを取得し、NSURLConnectionのdidReceiveData:メソッドを使用することで同じことができます。

于 2012-12-15T14:42:39.073 に答える
1

今でもNSURLConnectionDownloadDelegate機能しません。

これが良い代替品です:http: //github.com/jbrennan/JBContainedURLConnection

于 2011-12-01T08:12:21.500 に答える
1

皆さん、

私は最近、この新しい NSURLConnectionDataDelegate プロトコルを発見しました。ただし、iOS 5 のドキュメントは不完全です。

新しい NSURLConnectionDataDelegate プロトコルはドキュメントにありますが、それを使用する NSURLConnection の新しいバージョンはありません。そのドキュメントでは、非推奨になった NSURLConnectionDelegate プロトコル メソッドを使用するようにまだ指示されています。

Mac OS の NSURLDownload クラスと同じように、NSURLConnection がリモート URL からローカル ディスク上のファイルに直接データをダウンロードするようになったようです。これがどのように機能するかを理解するにはどうすればよいですか?

NSURLConnection のヘッダーは、デリゲートが準拠している NSURLConnectionDelegate プロトコルのバージョンに基づいて、接続オブジェクトが必要なものを推測することを示唆しています。それは本当に厄介なようです。クラスの動作を制御する方法として、デリゲートのプロトコル準拠を使用することは聞いたことがありません。

于 2011-11-04T18:00:23.270 に答える
1

ドキュメンテーションによると、ファイルはデリゲート メソッドが呼び出されている間だけ存在することが保証されているため、デリゲート メソッドが呼び出された瞬間に別の場所にコピーする必要があります。

Google は、サーバーが暗号化されたファイル名や MIME タイプを送信するときに問題が発生していると報告しています。

于 2011-10-13T13:21:42.897 に答える