I have been migrating my code from Swift 2 to Swift 4. I have the following code that worked fine in Swift 2:
func fetchUserThumbnailAvatar(_ task : inout URLSessionTask?, completion : @escaping (_ image : UIImage?) -> ()) {
fetchUserAvatar(Session.currentUser?.avatar?.thumbnailURL as URL? ?? URL(string:"")!, externalUrl: URL(string: thumbnailAvatar) ?? URL(string:"")!, &task, completion: completion)
}
fileprivate func fetchUserAvatar(_ internalUrl : URL, externalUrl : URL,_ task : inout URLSessionTask?, completion : @escaping (_ image : UIImage?) -> ()) {
fetchImage(externalUrl, task: &task, completion: { image in
if image == nil {
self.fetchImage(internalUrl, task: &task, completion: completion)
} else {
self.cache.removeObject(forKey: (internalUrl.path as AnyObject?)! )
completion(image)
}
})
}
However, after the conversion I get the following error:
Escaping closures can only capture inout parameters explicitly by value
at line:
if image == nil {
self.fetchImage(internalUrl, task: &task, completion: completion)
}
It would be great if someone could help me. Thanks.