2013-08-26 3 views
0

웹에서 이미지를로드하려고합니다. 에 대한 데이터를 초기화 나는이 방법을 사용NSData initWithContentsOfURL 오류

NSData *imageData = [[NSData alloc] initWithContentsOfURL:self.imageUrl]; 

을하지만 난이 오류 :

[__NSCFString isFileURL]: unrecognized selector sent to instance 0x817a4f0 
2013-08-26 09:45:53.221 CorePhoto[1643:3f03] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString isFileURL]: unrecognized selector sent to instance 0x817a4f0' 

그리고 물론 self.imageUrl은 NSURL의 속성입니다.

이 이미지 URL의 URL의 예입니다

http://farm5.static.flickr.com/4016/4555417946_e6332481b3_b.jpg 

이 내 메소드의 전체 코드 : 내 initWithContentsOfURL 방법에 어떤 문제가 있는지

- (void)resetImage 
{ 
    if (self.scrollView) { 
     if (self.imageUrl) { 
      //before to set the content, we reset it 
      self.scrollView.contentSize = CGSizeZero; 
      self.imageView.image = nil; 
      [self.spinner startAnimating]; 
      dispatch_queue_t loadImageQ = dispatch_queue_create("load image thread", NULL); 
      dispatch_async(loadImageQ, ^(void) { 
       [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; 
       NSData *imageData = [[NSData alloc] initWithContentsOfURL:self.imageUrl]; 
       [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; 
       UIImage *image = [[UIImage alloc] initWithData:imageData]; 
       dispatch_async(dispatch_get_main_queue(), ^(void) { 
        if (image) { 
         self.scrollView.zoomScale = 1.0; 
         self.scrollView.contentSize = image.size; 
         self.imageView.image = image; 
         self.imageView.frame = CGRectMake(0, 0, image.size.width, image.size.height); 
        } 
        [self.spinner stopAnimating]; 
       }); 
      }); 
     } 
    } 
} 

? 감사합니다 감사

+1

"물론 self.imageUrl은 NSURL 속성입니다." 아니, 그렇지 않아. 오류에 따라 __NSCFString입니다. 문자열에서 URL을 만들어야합니다. –

답변

1

imageUrlNSURL 속성으로 정의 될 수 있지만 값을 NSString 인스턴스로 설정했습니다. 이것은 많은 경우에 컴파일러에게 경고를 줄 수 없으며 사용하려고 시도 할 때까지 예외를 던지지 않을 것입니다.

imageUrl을 어디에 설정했는지 확인하고 유형을 확인한 다음 NSURL을 생성하십시오.

+0

감사합니다. NSURL 대신 문자열을 전달하기 때문에 오류가 발생했습니다. NSURL * url = [[photo.photoURL stringByAddingPercentEscapesUsingEncoding : NSUTF8StringEncoding]]; 이 방법을 다음으로 변경하면 NSURL * url = [NSURL URLWithString : [photo.photoURL stringByAddingPercentEscapesUsingEncoding : NSUTF8StringEncoding]]; 잘 작동합니다. 감사와 미안한 바보 같은 오류 XD. –