Swift syntaxe pour le bloc avec completionHandler... dans la méthode du délégué
C'est une ride sur l'NSURLSession achèvement bloc de problème, je vais avoir un diable de temps à résoudre dans Swift de la syntaxe. La méthode est la méthode d'authentification délégué de callback qui est appelée à auth défi; le développeur appelle l'achèvement bloc avec NSURLCredential, NSError.
L'Objective-C méthode ressemble à ceci:
-(void) provideUsernamePasswordForAuthChallenge:(NSURLAuthenticationChallenge *)authChallenge completionHandler:(void (^)(NSURLCredential *, NSError *))completionHandler{
NSURLCredential* credential = [NSURLCredential credentialWithUser:@"myname"
password:@"mypass"
persistence:NSURLCredentialPersistenceForSession];
completionHandler(credential, nil);
}
Le plus proche, je pense que j'ai obtenu dans Swift, est-ce:
func provideUsernamePasswordForAuthChallenge(authChallenge: NSURLAuthenticationChallenge!, completionHandler:(() -> (NSURLCredential?, NSError?)) {
var cred = NSURLCredential(user: "myname", password: "mypass", persistence: NSURLCredentialPersistence.ForSession)
return (cred, nil)
})
Mais, c'est encore barfing. Toutes les recommandations?
quelle erreur avez-vous?
OriginalL'auteur Stan | 2014-06-19
Vous devez vous connecter pour publier un commentaire.
Vous devez appeler completionHandler avec (cred, nil), pas de retour d'un n-uplet
-> ()
dans la signature de la méthode), et (2) puisque, pourNSURLCredential
le type de lapersistence
argument est connu, vous pouvez simplement fournir l'option que vous souhaitez utiliser,.ForSession
Lou, +10. Thnx.
la vie d'un sauveur.....
OriginalL'auteur Lou Franco
Ce code peut vous aider ->
OriginalL'auteur Prakash Raj
Votre type de rétro — vous voulez que le gestionnaire d'achèvement de prendre deux arguments et retourner aucun, mais vous avez défini comme une fonction qui ne prend pas d'argument et retourne une paire. Flop les deux côtés de la flèche.
OriginalL'auteur Chuck