2

Xcode 4.5.2 にアプリケーションがあります。画像をダウンロードするための URL 要求を送信し、画像ビューに画像を設定します。これを達成するために正常に動作する次のコードがあります。

dispatch_queue_t downloadQueue = dispatch_queue_create("Get Facebook Friend", NULL);
    dispatch_async(downloadQueue, ^{

self.firstFriendImage = [UIImage imageWithData:
                           [NSData dataWithContentsOfURL:
                            [NSURL URLWithString:
                             [[self.facebookPhotosAll objectAtIndex:self.randomIndex1]
                              objectForKey:@"pic_big"]]]];

dispatch_async(dispatch_get_main_queue(), ^{
            [self postDownloadTasks:self.topView setLabel:self.firstFriendLabel 
withFriendName:self.firstFriendName cropImage:self.firstFriendImage 
inImageView:self.friendOneView atYPoint:22];
  });
      });

したがって、このコードは問題なく動作しますが、Objective C は初めてなので、この言語を少し調べて、これと同じことを他にどのように行うことができるかを確認しようとしています。そこで、NSURLConnection sendAsynchronousRequest: メソッドを使用しようとしましたが (ここでいくつかの例を見た後)、このメソッドを機能させることができないようです。これは私がしたことです:

 NSOperationQueue *queue = [[NSOperationQueue alloc]init];
NSString *string = [[self.facebookPhotosAll  
                   objectAtIndex:self.randomIndex1]objectForKey:@"pic_big"];

    [NSURLConnection sendAsynchronousRequest: [NSURL URLWithString:   
           string] queue:queue   
             completionHandler:^(NSURLResponse *response, NSData *data, NSError *error){
        // Make sure eveything is ok
        if(error){
            // do something
        }

        self.firstFriendImage = [UIImage imageWithData:data];
         dispatch_async(dispatch_get_main_queue(), ^{

            [self postDownloadTasks:self.topView setLabel:self.firstFriendLabel 
withFriendName:self.firstFriendName cropImage:self.firstFriendImage  
inImageView:self.friendOneView atYPoint:22];

         });

    }];

したがって、このコードはまったく機能しません (データが返されません)。メソッドが呼び出されるとアプリがクラッシュし、次のメッセージが表示されます。

** キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了します。理由: '-[NSURL _CFURLRequest]: 認識されないセレクターがインスタンス 0xa39dd20 に送信されました'

NSURLConnection sendAsynchronousRequest メソッドを使用して、最初のコードの抜粋で行ったことを達成する方法を教えてもらえますか?

4

1 に答える 1

2

send asynchronousRequest メソッドで、URL 文字列の一部が欠落しています。最初に機能した方法のようになります。

[[self.facebookPhotosAll objectAtIndex:self.randomIndex1] objectForKey:@"pic_big"]
于 2013-02-12T16:59:17.850 に答える