2016-12-22 5 views
-3

Ich bekomme ein Bild von einem URL und setzen Sie das Bild auf UIImageView und Cache-Wörterbuch. Aber wenn ich das Bild auf das Wörterbuch eingestellt habe, habe ich diesen Fehler: swift 3.0 Ambiguous Verweis auf Mitglied 'tiefgestellt'.swift 3.0 Mehrdeutige Referenz auf Mitglied 'tiefgestellt'

var imageCache = Dictionary<String, UIImage>() 
func getImage(url: String, imageView: UIImageView) { 
    let image = self.imageCache[url] as UIImage? 
    if image == nil { 
     let url = URL(string:url)! 
     let req = NSMutableURLRequest(url:url) 
     let session = URLSession.shared 
     let task = session.dataTask(with: req as URLRequest) { (data, response, error) in 
      if data != nil && error == nil { 
       let image: UIImage = UIImage(data: data!)! 
       imageView.image = image 
       self.imageCache[url] = image //******* Here got the error! 
      } 
     } 
     task.resume() 
    } else { 
     imageView.image = image 
    } 
} 

Danke für die Hilfe.

+0

Mögliche Duplikat erklären [Fehler: Mehrdeutige Bezug auf Mitglieder Index 'in Swift 3] (http: //stackoverflow.com/questions/37874157/error-ambigous-reference-to-member-subscrip-in-swift-3) –

+0

@RemyCilia wirklich nicht das gleiche Problem – melody5417

+0

Da Sie die URLRequest überhaupt nicht verwenden, löschen Sie die Zeile 'let req ...' und übergeben 'url' als ersten Parameter der Datenaufgabe. – vadian

Antwort

0

Sie verwenden Schlüssel als URL, es wird nicht funktionieren, ändern Sie ihn auf url.absoluteString, weil Sie Ihre Wörterbuch Schlüssel als String

+0

Vielen Dank, das funktioniert. Aber meine Param URL ist auch String-Klasse, warum es nicht funktioniert. – melody5417

+0

weil Sie die URL-Variable mit einer anderen Variable vom Typ "URL" mit dem gleichen Namen überschreiben, können Sie 'url: String' in andere Dinge wie' urlString: String' ändern und dann 'urlString' für den Schlüssel verwenden – Tj3n

+0

yeah, das vermisse ich . Es ist ein blöder Fehler. Vielen Dank. – melody5417

Verwandte Themen