2016-12-22 5 views
-3

Я получаю изображение от URL и задаю образ UIImageView и словарь кеша. Но когда я установил изображение в словарь, я получил эту ошибку: swift 3.0 Неоднозначная ссылка на индекс участника.swift 3.0 Незначительная ссылка на индекс участника '

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 
    } 
} 

Спасибо за помощь.

+0

Возможной Дубликат [Error: Неоднозначная ссылка на член «подстрочный» в Swift 3] (HTTP: //stackoverflow.com/questions/37874157/error-ambiguous-reference-to-member-subscript-in-swift-3) –

+0

@RemyCilia действительно не такая же проблема – melody5417

+0

Поскольку вы не используете URLRequest, вообще удалите строку 'let req ...' и передать 'url' в качестве первого параметра задачи данных. – vadian

ответ

0

Вы используете ключ, как URL, оно не работает, замените его url.absoluteString, потому что вы объявляете свой словарь ключа в виде строки

+0

Большое спасибо, что работает. Но мой param url также является классом String, почему он не работает. – melody5417

+0

, потому что вы переопределяете переменную url с другой переменной типа 'URL' с тем же именем, вы можете изменить' url: String' на другие вещи, такие как 'urlString: String', затем использовать' urlString' для ключа – Tj3n

+0

да, я пропустил это , Это глупая ошибка. Огромное спасибо. – melody5417

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