2017-01-21 2 views
1

Ich habe ein Problem mit meinem Code. Ich versuche, ein Bild über eine StringBuilder herunterzuladen und dann auf ein UIImage einzustellen Ich schein ein Problem zu bekommen und ich hoffe jemand kann sehen was ich falsch gemacht habe.Ambiguous Verweis auf Member 'Datatask (mit: Completionhandler :)'

setUI:

uiMovieTitle.text = self.movies![movieIndex].title 

    var finalImageUrl = StringBuilder() 

    let session = URLSession(configuration: .default) 

    let downloadPicTask = session.dataTask(with: finalImageUrl) { (data, response, error) in 
     // The download has finished. 
     if let e = error { 
      print("Error downloading cat picture: \(e)") 
     } else { 
      // No errors found. 
      // It would be weird if we didn't have a response, so check for that too. 
      if let res = response as? HTTPURLResponse { 
       print("Downloaded cat picture with response code \(res.statusCode)") 
       if let imageData = data { 
        // Finally convert that Data into an image and do what you wish with it. 
        let image = UIImage(data: imageData) 
        // Do something with your image. 
        uiMoviePoster.image = image 
       } else { 
        print("Couldn't get image: Image is nil") 
       } 
      } else { 
       print("Couldn't get response code for some reason") 
      } 
     } 
    } 

    downloadPicTask.resume() 

} 

String

func StringBuilder() -> (String){ 
    let posterBase = "http://image.tmdb.org/t/p/w1920" 
    let linkEnd = self.movies?[movieIndex].posterPath 

    var finalLink = "" 

    finalLink = posterBase + linkEnd! 

    return finalLink 

} 

Ich habe auch einen anderen Download an, die mir eine Liste von Filmen (JSON) und ist entscheidend für die StringBuilder bekommt.

+1

StringBuilder sollte eine URL oder URLRequest zurückgeben –

+0

Mögliches Duplikat von [Swift 3 URLSession.shared() Undeutlicher Verweis auf Member 'dataTask (mit: completionHandler :) error (bug)] (http://stackoverflow.com/questions/37812286/swift-3-urlsession-shared-zweideutig-Referenz-zu-Mitglied-Datataskwithcomplet) – shallowThought

+0

Ich denke, Ihre 'finalLink' fehlt ein Schrägstrich'/'. Korrigiere es oder verwende besser "URL". – shallowThought

Antwort

0

Der Compiler beschwert sich, weil die Funktion SwiftBuilder eine String gibt und es gibt mehrere Methoden, die auf URLSession genannt dataTask(with:completion:), aber keiner von ihnen eine String für das erste Argument.

Wenn Sie SwiftBuilder benötigen, um weiterhin eine Zeichenfolge für einen anderen Teil Ihres Codes zurückzugeben, müssen Sie diese Zeichenfolge hier in eine URL konvertieren.

So etwas wie die folgenden funktionieren sollte:

let session = URLSession(configuration: .default) 

let imageUrlString = StringBuilder() 
if let imageUrl = URL(string: imageUrlString) { 
let downloadPicTask = session.dataTask(with: imageUrl) { (data, response, error) in 
    // The download has finished. 

Und so weiter ... lassen Sie mich wissen, ob das Sinn macht.

Verwandte Themen