2017-07-11 2 views
0

Bitte helfen Sie mir in der unteren Code. Ich erhalte eine Fehlermeldung:Ausdruck Typ "(_, _) -> Void" ist mehrdeutig ohne mehr Kontext

Expression type "(_, _) -> Void" is ambiguous without more context.

import UIKit 
import SDWebImage 

class CustomImageView: UIImageView { 
    let progressIndicatorView = CircularLoaderView(frame: CGRect.zero) 

    required init(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder)! 

     addSubview(self.progressIndicatorView) 
     progressIndicatorView.frame = bounds 
     progressIndicatorView.autoresizingMask = [.flexibleWidth, .flexibleHeight] 

     let url = NSURL(string: "http://png-3.findicons.com/files/icons/2795/office_2013_hd/2000/word.png") 
     self.sd_setImage(with: url as URL?, placeholderImage: nil, options: .cacheMemoryOnly, progress: { [weak self] (receivedSize, expectedSize) -> Void in 
      self.progressIndicatorView.progress = CGFloat(receivedSize)/CGFloat(expectedSize) 
     }) { [weak self](image, error, _, _) -> Void in 
      self.progressIndicatorView.reveal() 
     } 
    } 
} 
+0

Wenn Sie Fragen zu Kompilierungsfehlern stellen, müssen Sie angeben, in welcher Zeile der Fehler auftritt. Es ist nicht immer offensichtlich und zwingt andere dazu Zeit zu verschwenden, um das herauszufinden. –

+0

Betrachtet man die 'SDWebImage'-Implementierung, deklariert der 'progress'-Block nicht eine' URL' als dritten Parameter? – crizzis

+0

Wie sieht die Signatur für 'sd_setImage' aus? –

Antwort

0

ich denke, es auf die [weak self] (receivedSize, expectedSize) -> Void in sich bezieht, die die Funktion bedeutet sd.setImage() mehr als eine progress Argument Typ.

Sie können dies wahrscheinlich lösen, indem Sie explizit die Typen receivedSize und expectedSize als etwas wie [weak self] (receivedSize: Type1, expectedSize: Type2) -> Void in beschreiben.

0

Es ist, weil Sie einen weiteren Parameter aus dem progressBlock vermissen. Prüfen Sie diese

import UIKit 

Import SDWebImage

Klasse CustomImageView: UIImageView { lassen progressIndicatorView = CircularLoaderView (Rahmen: CGRect.zero)

required init(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder)! 

    addSubview(self.progressIndicatorView) 
    progressIndicatorView.frame = bounds 
    progressIndicatorView.autoresizingMask = [.flexibleWidth, .flexibleHeight] 

    let url = URL(string: "http://png-3.findicons.com/files/icons/2795/office_2013_hd/2000/word.png")! 
    self.sd_setImage(with: url, placeholderImage: nil, options: .cacheMemoryOnly, progress: { (receivedSize, expectedSize, _) in 
     self.progressIndicatorView.progress = CGFloat(receivedSize)/CGFloat(expectedSize) 
    }) { (image, error, _, _) in 

    } 
} 

} 

seee sollte

in progressBlock drei von ihnen
Verwandte Themen