Próbowałem zdefiniować zamknięcie za pomocą następujących bloków Objective-C:
typedef void(^UPBaseEventAPIArrayCompletion)(NSArray *results, UPURLResponse *response, NSError *error);
+ (void)getFriendsWithCompletion:(UPBaseEventAPIArrayCompletion)completion;
w tym:
UPUserAPI.getFriendsWithCompletion({(friends: [AnyObject], response: UPURLResponse, error: NSErrorPointer) -> Void in
})
... i otrzymał następujący błąd (patrz obrazek):
Nie można przekonwertować wartości typu „([AnyObject], UPURLResponse, NSErrorPointer) -> Void” na oczekiwany typ argumentu „UPBaseEventAPIArrayCompletion!”
Jaki jest właściwy sposób, aby to zrobić?
Odpowiedzi:
2 dla odpowiedzi № 1Spróbuj tego.
UPUserAPI.getFriendsWithCompletion({(friends: [AnyObject]?, response: UPURLResponse?, error: NSError?) -> Void in
//code
})
W kodzie celu C każdy z tych parametrów może być zerowy. Tak więc w Swift te parametry muszą być zdefiniowane jako Opcjonalne.