使用完成处理程序(关闭)语法从objective-c文件中的swift文件中调用函数

时间:2018-11-30 14:36:35

标签: ios objective-c swift closures

我无法从swift函数关闭的Objective-c文件中调用swift文件中的函数。

这是Swift函数

//In Utilities class

static func getString(query: NSString, completion: @escaping (_ response: NSString) -> Void) {

        completion("hello")
    }

这是我尝试在Objective-C类中调用它的方式:

 [Utilities getString:@"hi there" completion:^(NSString* response) {
     NSLog(response);
    }];

我收到错误消息“选择器'getString:completion:的未知类方法'

上面有什么问题?

注意:我可以在没有闭包/补全块的情况下调用更简单的方法。

in swift class
static func myTest () {
      print("function called")
    }

从Objective-c类调用,具有:

[Utilities myTest];

所以问题似乎与闭包语法有关。

1 个答案:

答案 0 :(得分:3)

包围类
@objcMembers class Utilities:NSObject {

或功能

@objc class func getString(query: NSString, completion: @escaping (_ response: NSString) -> Void) {

[Utilities getStringWithQuery:@"hi there" completion:^(NSString* response) {
 NSLog(response);
}];