2016-07-12 14 views
0

私はjavascriptcoreフレームワークを使用してJSファイル関数とやり取りしています。 Iは、次のタイプのオブジェクトを有するカスタムスウィフトオブジェクトを入力としてjavascriptメソッドに渡す

class Test: NSObject { 

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

Iは、オブジェクトの配列を作成し、私はJSにメソッドにこの配列を渡す必要が

var testArray = [Test]() 
for i in 0 ..< 4 { 
let test = Test() 
test.testId = i * 3 
test.testIndex = i 
test.testDate = NSDate() 
test.title = "Test \(i)" 
test.status = "waiting" 
testArray.append(test) 
} 

の下ようJavaScriptメソッドへの入力として渡しますよ、それを渡す方法を教えてください。

あなたがここで説明するようにJSに属性を渡すことができるはず

答えて

0

http://nshipster.com/javascriptcore/

ブロックウェイ

は今、マックせずにコードをテストすることができませんでしたが、多分働いている:

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コードで配列を読むことができます:

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

オブジェクトの後のオブジェクトをJavaScriptにロードした後、配列で作業できるはずです。あなたは、文字列では動作しない場合のみ、あなたは物事をバックキャストする必要があります(それが必要だwheather JSのnoobのように私にはありません)JSExportプロトコルを使用して

また、それを試すことができます他の方法は、http://nshipster.com/javascriptcore/に記載されています。

願わくは、あなたの質問に答えましたか?

関連する問題