2017-01-21 2 views
1

У меня проблема с моим кодом. Я пытаюсь загрузить изображение через StringBuilder, а затем установить его в UIImage. Кажется, у меня проблема, и я надеюсь, что кто-то сможет увидеть, что я сделал неправильно.ambigouous ссылка на datatask члена (с: completehandler :) '

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() 

} 

StringBuilder

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 

} 

Я также другую загрузку, который получает меня список фильмов (JSON) и имеет решающее значение для StringBuilder.

+1

StringBuilder должен возвращать URL-адрес или URLRequest –

+0

Возможный дубликат [Swift 3 URLSession.shared() Неоднозначная ссылка на dataTask участника (с: errorHandler :) ошибка (ошибка)] (http://stackoverflow.com/questions/37812286/swift-3-urlsession-shared-ambiguous-reference-to-member-datataskwithcomplet) – shallowThought

+0

Я думаю, что ваш 'finalLink' не имеет косой черты'/'. Исправьте или лучше используйте 'URL'. – shallowThought

ответ

0

Компилятор жалуется, потому что функция SwiftBuilder возвращает String и существует несколько методов на URLSession названные dataTask(with:completion:), но ни один из них не принимать String для первого аргумента.

Если вам нужно SwiftBuilder, чтобы продолжить возвращать строку для какой-либо другой части вашего кода, то здесь вам нужно будет преобразовать эту строку в URL.

Нечто подобное должно работать:

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. 

И так далее ... дайте мне знать, если это имеет смысл.

Смежные вопросы