2012-05-06 15 views
1

この質問の際に私をユーモアにする必要があります。実際の状況はかなり複雑であるため、これはやや疑似コードです。私が必要としない限り、この方法でイメージをロードしません。私がする必要があると仮定します。ios awkard image loading(uiimageviewにuiimageするためのURL)

NSURL *bgImageURL = [NSURL URLWithString:@"https://www.google.com/images/srpr/logo3w.png"]; 

UIImage *img = [UIImage imageWithData:[NSData dataWithContentsOfURL:bgImageURL]]; 

[self.anIBOutletOfUIImageView setImage:img]; 

が、私はどのように私はNSDataのにURLからイメージをロードしてからUIImageへのNSDataとは私のUIImageView用画像としてそのUIImageを設定することを読み込むことができ

-[__NSCFData _isResizable]: unrecognized selector sent to instance 0x9508c70 

で出クラッシュ?

は再び、私は、これはナンセンスのように聞こえるが、画像キャッシュシステムのために、私は私が物事をこの方法:(私は通常このような状況に対処する方法

答えて

1

私は新しい、iPadの「シングルビューアプリケーション」テンプレートにこのコードを差し込ん:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    NSURL *bgImageURL = [NSURL URLWithString:@"https://www.google.com/images/srpr/logo3w.png"]; 
    NSData *bgImageData = [NSData dataWithContentsOfURL:bgImageURL]; 
    UIImage *img = [UIImage imageWithData:bgImageData]; 
    [[self Imageview] setImage:img]; 
} 

私が適切にロードするイメージを得ました。私はUIImageViewのさまざまなコンテンツモードを試してみましたが、それらはすべて期待どおりに機能しました。

ゼロから始めれば、同じ問題が発生しますか?

エラーメッセージは、 "_isResizable"というメッセージをNSDataオブジェクトに送信していることを示しています。おそらく、UIImageViewimageプロパティがUIImageの代わりにNSDataと等しく設定されている可能性があります。

編集/更新

私の「作業」コピーが少しあなたから変更されたので、私も、戻って、その大事のいずれかの場合、コードを確認するために、「1-ライニング」の異なるバージョンを試してみました非作業コピー。コードを壊すことができませんでした。私の推測では、問題のコードは壊れていないが、近くのものは...

5

を行う必要があります使用しています実現(ないコンパイルされ、テストされていません) :。

NSURL * url = [NSURL URLWithString:@"https://www.google.com/images/srpr/logo3w.png"]; 
NSURLRequest * request = [NSURLRequest requestWithURL:url]; 
[NSURLConnection sendAsynchronousRequest:request 
            queue:[NSOperationQueue currentQueue] 
         completionHandler:^(NSURLResponse * resp, NSData * data, NSError * error) { 

    // No error handling - check `error` if you want to 
    UIImage * img = [UIImage imageWithData:data]; 
    [self.imageView performSelectorOnMainThread:@selector(setImage:) withObject:img waitUntilDone:YES]; 

}]; 

これはdataWithContentsOfURL:への呼び出しによって暗示長時間実行ネットワーク要求を回避し、ので、あなたのアプリが画像用データのダウンロード中も、メインスレッド上で物事を続けることができ

側の注意点として、 、あなたは私を走っているようですnと同じエラーがthis questionとなります。オブジェクトの割り当てに問題がないことを確認することができます。

関連する問題