2016-05-24 5 views
0

Ich habe eine Methode in Objective-C wie folgt:Aufruf Objective-C-Methode mit Blöcken von Swift

- (void)myFunction:(void (^)(NSArray *data))successBlock error:(void (^)(NSError *error))errorBlock { 
    //...// 
    successBlock(someData); 
} 

ich es von Swift nennen wollen, aber ich kann die Syntax nicht verstehen.

Was auch immer ich es versuchen, klagt:

SomeClass.sharedInstance().myFunction(
    successBlock: { 
     (data) in 
     print(data) 
    }, 
    error: { 
     (error) in 
     print(error) 
    }) 

nicht Wert von Nicht-Funktionstyp

'(((([AnyObject]!) -> Void!, error: ((NSError!) -> Void)!) -> Void)!

+0

Die Code-Vervollständigung soll Ihnen die richtige Syntax vorschlagen – vadian

+0

Wenn ich den Vorschlag automatisch vervollständigen Xcode gibt mir es mit demselben Fehler fehlschlägt –

Antwort

0

Dieser Swift entspricht

SomeClass.sharedInstance().myFunction({ data in 
    print(data) 
    }) { error in 
    print(error) 
    } 

Wenn Sie die Parameternamen müssen aufrufen können successBlock und errorBlock müssen Sie sie auf der ObjC-Seite deklarieren.