PhoneGap (Cordova) CDVCommandDelegate 为 Nil,如何获取有效对象?

PhoneGap (Cordova) CDVCommandDelegate is Nil, How Can I Get Valid Object?

我们正在使用 PhoneGap (Cordova) 构建我们的应用程序。

但是我有一个单独的 Swift 项目,我在 Swift 中进行所有本机编码,然后我们将 Swift 代码复制到 PhoneGap 构建的 .xcodeproj 中。

为了让生活更轻松,我将 'installing' Cordova 加入了我的 Swift 项目,这样我就可以模拟将在 Cordva 构建的应用程序中发生的调用。基本上我希望能够调用 CDVPluginResult 并从 CDVCommandDelegate 发送结果。

我已经成功安装了 Cordova,但我现在很难让一件事正常工作:我的 CDVCommandDelegate 始终为零。

这是我尝试将图像作为 base64 字符串发送的代码:

//custom CDVPlugin class that I called CDVPluginDelegate
let _singleton = CDVPluginDelegate()

//handles all CDVPlugin delegation tasks
class CDVPluginDelegate: CDVPlugin
{
    class var SINGLETON:CDVPluginDelegate
    {
        return _singleton
    }
}

//getting a picture and returning it 
 //pass image to phonegap
        var imageData = UIImagePNGRepresentation(image)
        var base64:String = imageData.base64EncodedStringWithOptions(nil)
        var cdvResult:CDVPluginResult = CDVPluginResult(status: CDVCommandStatus_OK, messageAsString: base64)
        println(CDVPluginDelegate.SINGLETON.commandDelegate)//PRINTS nil
        CDVPluginDelegate.SINGLETON.commandDelegate.sendPluginResult(cdvResult, callbackId: "imageSent")//crashes because command delegate is nil

如何正确 create/assign 这个 CDVPluginCommand 委托?

我不确定为什么,但只有在使用 Cordova 构建时才能获得有效的命令委托。如果您从 Cordova 进行构建,则命令委托是有效的,否则(如果您将 Cordova 作为 'plugin' 安装到现有应用程序)它将为零。