Gibt es eine Möglichkeit, eine Zeichenfolge in einen Codeblock umzuwandeln? Ich mache eine Ajax-Anfrage an eine Webseite von mir, die einen Endpunkt hat, der schnellen Code als String zurückgibt. Ich kann diesen Code als String zurückbekommen, aber ich kann diesen Code nicht ausführen, weil er nicht weiß, dass es Code ist.Kann ich einen String schnell in einen Codeblock umwandeln?
Antwort
Nein, das geht nicht. Swift ist eine kompilierte Sprache, die nicht wie Ajax interpretiert wird.
Der Swift-Compiler läuft auf Ihrem Mac, nicht auf dem iOS-Gerät. (Dasselbe gilt für Objective-C).
Darüber hinaus verbieten Apples App-Store-Richtlinien die Bereitstellung von ausführbarem Code für Ihre Apps. Selbst wenn Sie einen Weg finden, dies zu tun, wird Ihre App abgelehnt.
Wie andere darauf hingewiesen haben, können Sie dies nicht tun, wenn Sie eine iOS-App erstellen (insbesondere für die Verteilung im App Store). Wenn Sie jedoch Swift-Code für eine OS X-Maschine schreiben und wissen, dass XCode auf der Maschine installiert ist, können Sie Ihre Swift-Codefolge ausführen, indem Sie den Swift-Compiler der Befehlszeile ausführen. So etwas wie dies (mit entsprechender Fehlerprüfung, natürlich):
var str = "let str = \"Hello\"\nprintln(\"\\(str) world\")\n"
let task = Process()
task.launchPath = "/usr/bin/swift"
let outpipe = Pipe()
let inpipe = Pipe()
inpipe.fileHandleForWriting.write(str.data(using: String.Encoding.utf8, allowLossyConversion: true)!)
task.standardInput = inpipe
task.standardOutput = outpipe
task.launch()
task.waitUntilExit()
task.standardInput = Pipe()
let data = outpipe.fileHandleForReading.readDataToEndOfFile()
let output = NSString(data: data, encoding: String.Encoding.utf8.rawValue)! as String
Auch dies ist wahrscheinlich nicht in fast allen realen Fällen zu empfehlen, aber es ist eine Möglichkeit, Sie einen String von Swift Code ausführen können, wenn Sie wirklich müssen.
- 1. Wie kann ich einen String Text in einen Klassennamen umwandeln
- 2. Warum einen String in einen String umwandeln?
- 3. Lokal einen Codeblock in SQL
- 4. Wie kann ich einen Codeblock ausschließlich in vim einrücken?
- 5. Wie kann ich einen Typ in Bigint in MySQL umwandeln?
- 6. Wie kann ich diese Funktion in einen generischen Typ umwandeln?
- 7. Wie kann ich eine Java Enumeration in einen Stream umwandeln?
- 8. Wie alles in einen String sicher in JavaScript umwandeln
- 9. Wie kann ich einen Python-Urandom in einen String konvertieren?
- 10. Android Wie kann ich einen String in einen bearbeitbaren konvertieren
- 11. Kann ich nullptr in einen anderen Zeigertyp umwandeln?
- 12. Wie kann ich ID in einen Float-Code umwandeln?
- 13. Kann ich ein unsigned char * in einen unsigned int * umwandeln?
- 14. Wie kann ich meine Testklasse in einen JUnit Testfall umwandeln?
- 15. Deaktivieren von Glimpse für einen bestimmten Codeblock
- 16. File.ReadAllLines() -Methode einen Ausbruch von Codeblock verursacht
- 17. Eine String-Match-Anforderung in einen regulären Ausdruck umwandeln
- 18. Wie schließe ich UL-Tags in einen Rasierer-Codeblock ein?
- 19. Wie kann ich das Abbrechen von VC++ für einen bestimmten win32-Ausnahmetyp für einen Codeblock deaktivieren?
- 20. Wie kann ich einen relativen Link in Mechanize in einen absoluten umwandeln?
- 21. Wie kann ich einen String Vector zurückgeben?
- 22. Wie kann ich einen String deserialisieren?
- 23. Pfad in String umwandeln
- 24. VSTO: Wie kann ich einen Mail-Artikel als Formular umwandeln?
- 25. Wie kann ich Integer auf String in Scala umwandeln?
- 26. '+' kann Fixnum nicht in String umwandeln (TypeError)
- 27. einen String in einen Doppel
- 28. Wie kann ich einen vorhandenen d3-Bereich in einen gestapelten Bereich umwandeln?
- 29. Wie kann ich einen int-Wert in einen generischen Typparameter umwandeln, der äquivalent ist wie char?
- 30. Wie kann ich ein Klassenobjekt in String umwandeln?
Kein Swift-Programmierer, aber das klingt aus mehreren Gründen wie eine schlechte Idee: 1- Wenn der Kanal kompromittiert ist, kann ein Angreifer Ihre App dazu bringen, willkürlichen Code trivial auszuführen. 2- Wenn es sich um eine App Store-App handelt, lehnt Apple diese ab, da der Download von ausführbarem Code nicht zulässig ist. 3- Sie müssten Ihre App kompilieren, die je nach Gerät langsam/unmöglich sein könnte. Letztendlich sollten Sie diesen Code in Ihre App einfügen und sich von Ihrem Server eine Nachricht senden lassen, die der App mitteilt, welcher Code ausgeführt werden soll. –