命令委托无法从 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:有吗?
}
我正在尝试桥接 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:有吗? }