16
NSError *error = nil;
NSURL *url = [NSURL URLWithString:[imageLinks objectAtIndex:0]];
NSData *tdata = [NSData dataWithContentsOfURL:url options:NSDataReadingUncached error:&error];
if (error) {
    NSLog(@"%@", [error localizedDescription]);
}else {
    // no error, this one is being called within my app
    NSLog(@"Data loaded successfully");
}
self.pictureView1.image = [UIImage imageWithData:tdata];

UIImagejpeg ファイルがあるので、URL コンテンツが正常に収集されていることを確認できますが、画像データをアプリに入れようとすると失敗します。NSData が使用可能であることを確認するためのチェックがあるのだろうかUIImage

また、この失敗の原因と、それを防ぐ方法もわかりません。どんな助けでも大歓迎です。

4

8 に答える 8

26

ドキュメントに記載されているように、 imageWithData: UIImage がデータから画像を作成できなかった場合は nil を返します。実行時にこれを処理する正しい方法は、そのメソッドが nil を返すときにプレースホルダー イメージを提供することです。

診断に関しては、まずコンソール メッセージを確認してください。役立つ情報が表示されることがあります。そうでない場合は、NSData をディスクにダンプし、結果をサーバーに保存されているファイルと比較することをお勧めします。破損したデータを取得することもあれば、jpeg バイナリ データを予期していたところに html エラー メッセージが表示されることもあります。

于 2012-06-17T15:52:35.110 に答える
4

使用できます

 if ([UIImage imageWithData:yourNSData]) {
     // there was an image
 }
于 2015-04-16T19:55:44.793 に答える
0

これを試してみてください...

if ((dataImage != NULL) && ![v isKindOfClass:[NSNull class]])
{

}

私の場合、これ以外に何も機能しませんでした。

于 2015-08-28T08:54:21.837 に答える
-1
if (tdata !=(NSData *)nil){ 
    NSlog(@"Valid");
}
于 2012-06-18T07:56:24.413 に答える
-2
if (tdata !=nil){ 
    NSlog(@"Valid");
}

これを試してください。これにより、nsdataが空かどうかがチェックされます。

于 2012-06-18T06:53:51.180 に答える