/ / Swift: Use o fechamento compatível com bloco Objective-C - ios, objetiva-c, swift

Swift: Use o fechamento compatível com o bloco Objective-C - ios, objective-c, swift

Tentei definir um encerramento usando os seguintes blocos Objective-C:

typedef void(^UPBaseEventAPIArrayCompletion)(NSArray *results, UPURLResponse *response, NSError *error);

+ (void)getFriendsWithCompletion:(UPBaseEventAPIArrayCompletion)completion;

nisso:

UPUserAPI.getFriendsWithCompletion({(friends: [AnyObject], response: UPURLResponse, error: NSErrorPointer) -> Void in

})

... e obteve o seguinte erro (veja a imagem):

Não é possível converter o valor do tipo "([AnyObject], UPURLResponse, NSErrorPointer) -> Void" para o tipo de argumento esperado "UPBaseEventAPIArrayCompletion!"

insira a descrição da imagem aqui

Qual é a maneira correta de fazer isso?

Respostas:

2 para resposta № 1

Tente isso.

UPUserAPI.getFriendsWithCompletion({(friends: [AnyObject]?, response: UPURLResponse?, error: NSError?) -> Void in
//code
})

No código Objective C, qualquer um desses parâmetros pode ser nulo. Portanto, no Swift, esses parâmetros devem ser definidos como opcionais.