2017-06-12 3 views
0

Ich möchte meine benutzerdefinierte Delegatmethoden in Reaktion Rückruf des Alamofire verwenden, wie unten:Delegieren ist gleich Null in Alamofire Antwort Rückruf

func startDownloadSegment() { 
    let destination: DownloadRequest.DownloadFileDestination = { _, _ in 
    let filePath = self.generateFilePath() 

    return (filePath, [.createIntermediateDirectories]) 
    } 

    // 1 
    print(self.delegate) 

    Alamofire.download(downloadURL, to: destination).response { response in 
    // 2 
    print(self.delegate) 

    if response.error == nil { 
     self.delegate?.segmentDownloadSucceeded(with: self) 
    } else { 
     self.delegate?.segmentDownloadFailed(with: self) 
    } 
    } 
} 

Wie Sie sehen können, No.1 print (self.delegate) gibt den delegator Ich setze. Aber No.2 gibt immer nil zurück, so dass die Delegate-Methode wie downloadSucceeded (with :) nicht aufgerufen werden kann.

Vielen Dank.

+0

Haben Sie den Delegaten festgelegt? – NSNoob

+0

Es wird mehr Code angezeigt, möglicherweise wird auch die Implementierung der Delegiertenstelle unterstützt. – dip

+0

@NSNoob Ja, Delegat ist festgelegt. Ich habe meine Frage aktualisiert. –

Antwort

1

Ich finde das Problem. Das Problem ist, habe ich die Delegierten als

schwach var Delegaten

Aber wie in Alamofire Antwort Rückruf, soll ich ‚schwach‘ Schlüsselwort weglassen, um es getan.