您如何访问 swift 中的 KrollCallback?
How do you access a KrollCallback in swift?
我已经实现了一个自定义框架,并且它被集成到一个启用了 hyperloop 的项目中。
我正在将 function
定义作为参数传递给采用协议的 swift
函数。
Javascript:
var customListener = {};
customListener.onPayEvent = function(event) {
console.log("moop");
};
var PayView = require('Pay/PayView');
var payView = PayView.alloc().initWithPayEventListener(customListener);
此 javascript 函数定义作为 KrollCallback
。
Swift代码:
class PayListener: NSObject, WootPayEventListener {
let payEventListener: PayEventListener
init(payEventListener: PayEventListener) {
self.payEventListener = payEventListener
}
public func onPayEvent(PayEvent: PayEvent) {
os_log("calling payEventListener.onPayEvent")
os_log("listener description = %{public}@", self.payEventListener.description)
os_log("listener debugDescription = %{public}@", self.payEventListener.debugDescription ?? "")
// self.payEventListener.onPayEvent(payEvent: "woo dogggy")
}
}
如何在此对象上调用方法,以便我可以 return 来自 swift 的结果返回 javascript?
我能够通过在本地构建 TitaniumKit
框架然后将其导入我的项目来做到这一点。
TitaniumKit
源代码在这里:https://github.com/appcelerator/titanium_mobile/tree/master/iphone/TitaniumKit
框架的当前构建步骤如下
carthage build --archive
将其导入项目后,我就可以像这样使用 KrollCallback
:
class SimplePayListener: NSObject, SimplePayEventListener {
let payEventListener: PayEventListener
init(payEventListener: PayEventListener) {
self.payEventListener = payEventListener
}
public func onPayEvent(payEvent_ payEvent: String) {
os_log("SimplePayListener event description = %{public}@", fivestarsPayEvent.description)
let appceleratorCallback:KrollCallback = self.payEventListener as! KrollCallback
appceleratorCallback.call([payEvent], thisObject: self.payEventListener)
}
}
我已经实现了一个自定义框架,并且它被集成到一个启用了 hyperloop 的项目中。
我正在将 function
定义作为参数传递给采用协议的 swift
函数。
Javascript:
var customListener = {};
customListener.onPayEvent = function(event) {
console.log("moop");
};
var PayView = require('Pay/PayView');
var payView = PayView.alloc().initWithPayEventListener(customListener);
此 javascript 函数定义作为 KrollCallback
。
Swift代码:
class PayListener: NSObject, WootPayEventListener {
let payEventListener: PayEventListener
init(payEventListener: PayEventListener) {
self.payEventListener = payEventListener
}
public func onPayEvent(PayEvent: PayEvent) {
os_log("calling payEventListener.onPayEvent")
os_log("listener description = %{public}@", self.payEventListener.description)
os_log("listener debugDescription = %{public}@", self.payEventListener.debugDescription ?? "")
// self.payEventListener.onPayEvent(payEvent: "woo dogggy")
}
}
如何在此对象上调用方法,以便我可以 return 来自 swift 的结果返回 javascript?
我能够通过在本地构建 TitaniumKit
框架然后将其导入我的项目来做到这一点。
TitaniumKit
源代码在这里:https://github.com/appcelerator/titanium_mobile/tree/master/iphone/TitaniumKit
框架的当前构建步骤如下
carthage build --archive
将其导入项目后,我就可以像这样使用 KrollCallback
:
class SimplePayListener: NSObject, SimplePayEventListener {
let payEventListener: PayEventListener
init(payEventListener: PayEventListener) {
self.payEventListener = payEventListener
}
public func onPayEvent(payEvent_ payEvent: String) {
os_log("SimplePayListener event description = %{public}@", fivestarsPayEvent.description)
let appceleratorCallback:KrollCallback = self.payEventListener as! KrollCallback
appceleratorCallback.call([payEvent], thisObject: self.payEventListener)
}
}