2017-12-25 5 views
0

なぜ完了ハンドラに問題がありますか?これをどのように修正できますか?メンバデータタスクへの曖昧な参照(with:completionHandler :)

func loadImageusingCacheWithUrlString(urlString: String) { 

    self.image = nil 
    if let cachedImage = imageCache.object(forKey: urlString as AnyObject) as? UIImage { 
     self.image = cachedImage 
     return 
    } 

    let url = NSURL(string : urlString) 

    URLSession.shared.dataTask(with: url!, 
           completionHandler: { (data, response, error) in 
     if error != nil { 
      print(error!) 
      return 
     } 
     DispatchQueue.main.async(execute: { 
      if let currImage = UIImage(data: data) { 
       imageCache.setObject(currImage, forKey: urlString) 
       self.image = currImage 
      } 

      //cell.imageView?.image = UIImage(data: data) 
     }) 

    }).resume() 

} 
+0

「NSURL」を使用すると混乱します。最近、 'URL'を使用してください。 – Rob

答えて

0

使用エラー「オプション型の値を取得する。また

let url = URL(string : urlString) 

この 'データの?'アンラップされていないので、次のように書く必要があります。

if let currImage = UIImage(data: data!) { 
    imageCache.setObject(currImage, forKey: urlString) 
    self.image = currImage 
}