Синтаксис для вызова асинхронного метода совместно используемых экземпляров изнутри замыкания в Swift - PullRequest
0 голосов
/ 17 декабря 2018

У меня проблемы с синтаксисом для вызова метода общего экземпляра из замыкания:

Вот мой код:

func getContactImage (contact:Contacts, completion:@escaping (_ myimage: UIImage)->()){//open 1 method
    var animg = UIImage(named:"default.png")!

    let surl = "https://~/contactimage.png"
    Utilities.shared.downloadImage(surl: surl as NSString, completion: image as UIImage ->Void in animg = img) 
    completion(animg)
}

Строка Utilities.shared.downloadImage выдает несколько ошибокв том числе:

Невозможно преобразовать значение типа «UIAccessibilityTraits» (он же «UInt64») в тип «UIImage» при приведении

Метод общего экземпляра выглядит следующим образом:

@objc func downloadImage(surl: NSString, completion : @escaping (UIImage) -> Void ) {
    //download image
}

Каков правильный синтаксис для вызова метода общего экземпляра из замыкания?

1 Ответ

0 голосов
/ 17 декабря 2018

Используйте

Utilities.shared.downloadImage(surl) {  (img) in

  // use img here
}

Также измените функцию

@objc func downloadImage(_ surl: String, completion : @escaping (UIImage) -> Void ) { }

func getContactImage (contact:Contacts, completion:@escaping (_ myimage: UIImage)->()){//open 1 method
    var animg = UIImage(named:"default.png")!

    let surl = "https://~/contactimage.png"

    Utilities.shared.downloadImage(surl) { (img) in 
       completion(img)
     }
}

Кстати, поощряйте использование SDWebImage

...