2016-08-25 4 views
0

Я действительно новый и любопытный для разработки iOS и слежу за руководствами, документами readme и учебниками, которые пытаются работать над небольшим небольшим проектом. У меня есть следующий класс, который очень хорошо работает при печати данных json с веб-сервера. Я могу видеть данные json, напечатанные на моей консоли в Xcode, однако я хотел бы использовать SDWebimage для загрузки/кэширования изображений из данных json и в мой UIImageView, который находится внутри моего UICollectionView - оба из которых я создал в раскадровке для этого класса.Загрузка URL-адресов из JSON в SDWebimage

Может кто-нибудь указать мне в правильном направлении? Как она стоит моя UICollectionView просто пусто, когда я загружаю следующее:

import UIKit 
import SDWebImage 

class TopratedVC: BaseViewController { 

     @IBOutlet var collectionview: UICollectionView! 

    //Our web service url 
    let URL_GET_coffeemugs:String = "http://coffeemugs.com/ios/feed.php" 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     addSlideMenuButton() 
     // Do any additional setup after loading the view. 

     //SDWebimage stuff 
     let imageView = UIImageView() 

     //created NSURL 
     let requestURL = NSURL(string: URL_GET_coffeemugs) 

     //creating NSMutableURLRequest 
     let request = NSMutableURLRequest(URL: requestURL!) 

     //setting the method to post 
     request.HTTPMethod = "GET" 

     //creating a task to send the post request 
     let task = NSURLSession.sharedSession().dataTaskWithRequest(request){ 
      data, response, error in 

      //exiting if there is some error 
      if error != nil{ 
       print("error is \(error)") 
       return; 
      } 

      //parsing the response 
      do { 
       guard let coffeemugs = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as? NSArray else { 
        //Doesn't exist, or isn't an NSArray 
        return 
       } 

       for coffeemug in coffeemugs { 
        //getting the data at each index 
        let coffeemugName = coffeemug["name"] as! String 
        let coffeemugDirectLink = coffeemug["direct_link"] as! String 
        let coffeemugImage = coffeemug["image"] as! String 

        //displaying the data 
        print("name -> ", coffeemugName) 
        print("direct_link -> ", coffeemugDirectLink) 
        print("image -> ", coffeemugImage) 
        print("===================") 
        print() 
       }    

      } catch { 
       print(error) 
      } 
     } 
     //executing the task 
     task.resume() 

    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

} 

Я пытался загрузить его, используя метод ниже, но это не приводит к загрузке изображения:

NSString *imageString = [[_imgurArray objectAtIndex:indexPath.row] objectForKey:@"direct_link"]; 
[imageView setImageWithURL:[NSURL URLWithString:imageString]]; 
cell.backgroundView = imageView; 
+0

Does 'coffeemug [" image "]' содержит строку url изображения? – pkc456

+0

Как 'coffeemugDirectLink', так и' coffeemugImage' - это URL-адрес изображения на самом деле. – user3591436

+0

Что делает '_imgurArray'? Является ли это копией 'coffeemugs' или содержит только строку url изображений? – pkc456

ответ

0

попробовать

NSString *imageString = [[_imgurArray objectAtIndex:indexPath.row] objectForKey:@"direct_link"]; 
    [cell.imageView setImageWithURL:[NSURL URLWithString:imageString]]; 

, но это будет изменить размер ImageView, когда изображение будет скачать, так что лучше добавить UIImageView в предпочитаемых в камере (stroyboard), а затем сделать IBOutlet теперь вы можете использовать

NSString *imageString = [[_imgurArray objectAtIndex:indexPath.row] objectForKey:@"direct_link"]; 
    [cell.yourImageView setImageWithURL:[NSURL URLWithString:imageString]]; 

Спасибо (:

+0

Хатри вы можете указать мне, где я должен использовать вышеуказанные коды? – user3591436

+0

используйте их в своей ячейкеForRowAtIndex: –

+0

У меня нет «cellForRowAtIndex», можете ли вы показать мне пример того, как я могу это достичь? – user3591436

0

Использование SDWebImage с опцией SDWebImageRetryFailed например

[YOUR_IMAGEVIEW sd_setImageWithURL:[NSURL URLWithString:subCategoryImageURL] placeholderImage:[UIImage imageNamed:@""] options:SDWebImageRetryFailed]; 
Смежные вопросы