4

NSURLConnection sendSynchronousRequest メソッドを使用して画像をダウンロードしていますが、正常に動作します。ただし、画像の URL が画像ファイル以外を指しているという問題に遭遇することがあります。たとえば、次の画像以外の URL が問題を引き起こしていることがわかりました。 http://www.100plusposters.com/images/ExoticFlowers.jpg URL が Web ページを返します。これは、画像がサイトにないために発生すると考えられます。

Objective-C の良い点の 1 つは、無効なイメージによってクラッシュが発生しないことです。シンプルに静かに進み、画像が表示されませんが、それはまだ問題です.

返されたデータを検証して、表示する前に有効な画像ファイルであることを確認するにはどうすればよいですか?

ありがとう!

それが役立つ場合に備えて、私の関連コード...

NSError *error = nil;
NSURLResponse *response;
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:5];

NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

if(data != nil && [error localizedDescription] == nil) 
{
    //Create UIImage object using initWithData method
    //Display UIImage
}
4

3 に答える 3

8

NSURLResponse オブジェクトにMIMEType プロパティが含まれているようです。これにより、返されるデータの型がどのようなものであるかがよくわかります。

于 2009-07-07T21:24:31.877 に答える
4

この質問をさらに一歩進めてもらえますか?サーバーからの画像データが不完全または破損している場合はどうなりますか?完全なトランスポートが機能し、MIMEタイプはimage / jpegであり、UIImageは構築され、nilではありませんが、レンダラーはデータの不整合を検出し、ログに「BadHuffmancode」または「prematureendofdatasegment」が表示される場合があります

UIImageをビューコンテキストに入れて、画面にきれいでない画像を表示する前に、このエラーをどのようにキャプチャしますか?

于 2009-07-30T18:07:15.167 に答える
0

Http Request のヘッダーから取得したコンテンツの長さと、最終的に受信したデータを照合すると、ダウンロードされたデータが完全かどうかがわかると思います。

破損については、あまり情報がありません。

于 2009-07-31T10:42:56.287 に答える