命令委托无法从 Swift 调用到 Objective C

Command Delegate is not working calling from Swift to Objective C

我正在尝试桥接 Swift 5 和现有的 Objective c 函数。通常,Cordova 请求会命中 Swift 层,后者又调用 Objective C 和 returns 将结果返回给 Cordova。在编译期间,我收到此错误

       NSLog(@"Result : %@ ", result);
       CDVPluginResult* pluginResult;
       pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:result];
       // Below line throwing "No known class method for selector 'commandDelegate'"
      [[self commandDelegate] sendPluginResult:pluginResult callbackId:command.callbackId];

commandDelegate属性是一个实例属性,不是class 属性。线索在错误“No known class method”中——上面的代码当前必须在 class 方法中(在 ObjC 中用 + 表示),但是 commandDelegate 属性 只能从实例方法中引用(由 - 表示)。 self 在此上下文中是对 class 本身的引用,而不是 class.

的实例

确保封闭函数是一个实例方法(如果这是您需要的)。还要确保你的插件正在实现 CDVPlugin 接口(插件头文件中的 @interface MyPlugin : CDVPlugin),否则你将无法访问 commandDelegate 属性.

使其成为全局变量。

结构全局{ static var sampleCommandDelegate:有吗? }