使用Swift中的块调用Objective-C方法

时间:2016-05-24 12:54:06

标签: objective-c swift objective-c-blocks

我在Objective-C中有一个方法如下:

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

我想从Swift调用它,但我无法理解语法。

无论我尝试什么,都会抱怨:

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

无法调用非功能类型的值

  

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

1 个答案:

答案 0 :(得分:0)

这个Swift等价物是

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

如果您需要参数名称successBlockerrorBlock,则必须在ObjC侧声明它们。