将自定义swift对象作为输入传递给javascript方法

时间:2016-07-12 06:18:13

标签: ios swift javascriptcore

我正在使用javascriptcore框架与JS文件功能进行交互。 我有以下类型的对象

$giftTo = !empty($value['giftTo']) ? $value['giftTo'] : '<b>not  entered</b>';
$gifts[] = "I give my ". $value['giftGiveMy'] ." to ". $giftTo .".\n";

我正在创建对象数组并将其作为输入传递给javascript方法,如下所示

class Test: NSObject {

var testId: NSNumber?
var testIndex: Int?
var testDate: NSDate?
var title: String?
var status: String?
}

我必须将此数组传递给JS的方法,请让我知道如何传递它。

1 个答案:

答案 0 :(得分:0)

您应该能够将属性传递给JS,如下所述: http://nshipster.com/javascriptcore/

阻挡

现在无法在没有Mac的情况下测试代码,但可能正在运行:

let testArrayCount: @convention(block) Void -> String = {
  return testArray.count
}

let transferTest: @convention(block) String -> (String, String, String, String, String) = {
  i in
  return ( String(testArray[i].0),String(testArray[i].1),String(testArray[i].2),testArray[i].3,testArray[i].4 )
}

context.setObject(unsafeBitCast(testArrayCount, AnyObject.self), forKeyedSubscript: "testArrayCount")
context.setObject(unsafeBitCast(transferTest, AnyObject.self), forKeyedSubscript: "transferTest")

现在您可以在JS代码中读取数组(现在是Pseudocode):

var jsTestArray;
for ( i=0, i<testArrayCount(), i++ ) {
  jsTestArray.append( transferTest(i) );
}

将对象后面的对象加载到Javascript中后,您应该可以使用该数组。如果你不想使用字符串,你可能不得不把东西丢回去(但是作为JS noob,我不需要这样做)

使用JSExport协议

您也可以通过http://nshipster.com/javascriptcore/上描述的其他方式尝试。

希望,这回答了你的问题?