2016-07-12 13 views
0

Ich benutze JavaScript-Framework, um mit den JS-Dateifunktionen zu interagieren. I habe die Aufgabe, in der folgenden ArtÜbergeben von benutzerdefinierten Swift-Objekt an Javascript-Methoden als Eingabe

class Test: NSObject { 

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

ich das Array von Objekt und Weitergabe als Eingabe in JavaScript-Methode wie

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 I übergeben, um diese Anordnung zu Verfahren unter

Schaffung Bitte lassen Sie mich wissen, wie ich es weitergeben kann.

Antwort

0

Sie sollten in der Lage sein, um die Attribute zu JS passieren, wie hier beschrieben: http://nshipster.com/javascriptcore/

Die Blöcke-Wegen

kann den Code ohne Mac jetzt nicht testen, aber vielleicht funktioniert:

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

jetzt können Sie das Array in Ihrem JS-Code lesen (dies ist Pseudocode jetzt):

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

Nach dem Laden Objekt nach Objekt in Ihr Javascript, sollten Sie in der Lage sein, mit dem Array zu arbeiten. Wenn Sie mit Strings nicht nur arbeiten wollen, können Sie die Dinge zurück (aber wie JS Noob ich nicht wheather es notwendig ist) werfen müssen

Mit JSExport Protokoll

Sie können es auch versuchen, der andere Weg, beschrieben auf http://nshipster.com/javascriptcore/.

Hoffe, dies beantwortet Ihre Frage?

Verwandte Themen