/ / Swift: Verschluss verwenden, der mit Objective-C-Block kompatibel ist - IOS, Objective-C, SWIFT

Swift: Verwenden Sie den Abschluss, der mit Objective-C-Block kompatibel ist - ios, objective-c, swift

Ich habe versucht, einen Abschluss mit den folgenden Objective-C-Blöcken zu definieren:

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

+ (void)getFriendsWithCompletion:(UPBaseEventAPIArrayCompletion)completion;

in diesem:

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

})

... und bekam folgenden Fehler (siehe Bild):

Wert des Typs "([AnyObject], UPURLResponse, NSErrorPointer) -> Void" kann nicht in den erwarteten Argumenttyp "UPBaseEventAPIArrayCompletion!" Konvertiert werden.

Bildbeschreibung hier eingeben

Was ist der richtige Weg, dies zu tun?

Antworten:

2 für die Antwort № 1

Versuche dies.

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

Im Ziel-C-Code könnte jeder dieser Parameter gleich Null sein. In Swift müssen diese Parameter daher als Optionals definiert werden.