2013-08-26 5 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.

это пример ImageUrl URL:

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

это полный код моего метода:

- (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]; 
       }); 
      }); 
     } 
    } 
} 

, что случилось с моим методом initWithContentsOfURL? спасибо благодаря

+1

«И, конечно, self.imageUrl - свойство NSURL». Нет, это не так. Это ошибка __NSCFString в соответствии с ошибкой. Вам нужно создать URL-адрес из строки. –

ответ

1

imageUrl может быть определена как NSURL собственности, но вы установите его значение в качестве NSString экземпляра. Это может не дать вам предупреждение о компиляторе в ряде случаев и не будет генерировать исключение, пока вы не попытаетесь его использовать.

Проверьте, где вы установили imageUrl, и убедитесь, что вы проверяете тип и создаете NSURL.

+0

Спасибо, ошибка в том, где я установил свойство, потому что я передаю строку, а не NSURL: NSURL * url = [[photo.photoURL stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]]; Если я изменю этот метод на это: NSURL * url = [NSURL URLWithString: [photo.photoURL stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]]; работает нормально. спасибо и извините за глупую ошибку XD. –

Смежные вопросы