2016-07-12 36 views
0

我正在使用javascriptcore框架與JS文件函數進行交互。 我有對象在以下類型將自定義swift對象傳遞給javascript方法作爲輸入

class Test: NSObject { 

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

我創建對象的陣列和通過作爲輸入到JavaScript方法如下面

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) 
} 

我具有與本數組傳遞到方法,JS ,請讓我知道如何通過它。

回答

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代碼數組(這是現在的僞代碼):

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

將對象加載到Javascript後,您應該可以使用該數組。如果你不想處理字符串的工作只有你可能要投的東西回來(但JS小白我不wheather有必要)

使用JSExport協議

你也可以試試另一種方式,在http://nshipster.com/javascriptcore/上描述。

希望,這回答了你的問題?

相關問題