2016-08-25 91 views
0

我真的很新的,好奇的iOS開發和被以下指南,自述文檔和教程試圖在一個小的小方項目工作。我有以下的類,它的作品真的很好在打印json數據從一個網絡服務器,我可以看到我在Xcode控制檯打印json數據,但我想用SDWebimage加載/緩存圖像關閉json數據和放入我的UIImageView,這是我的UICollectionView裏面 - 我在這個課程的故事板中創建了這兩個圖片。加載的URL 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

'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時,圖像將被下載,以便更好地加在你的細胞(stroyboard)者優先一個UIImageView然後做一個IBOutlet中,現在你可以使用

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

感謝(:

+0

Khatri能否請您指出我在哪裏使用上述代碼的位置? – user3591436

+0

在你的cellForRowAtIndex中使用它們: –

+0

我沒有'cellForRowAtIndex'你能告訴我一個如何實現這個的例子嗎? – user3591436

0

使用SDWebImage與選項SDWebImageRetryFailed例如

[YOUR_IMAGEVIEW sd_setImageWithURL:[NSURL URLWithString:subCategoryImageURL] placeholderImage:[UIImage imageNamed:@""] options:SDWebImageRetryFailed];