Ich verwende ein AppleScript in meinem Obj-C-Kakaoprojekt, um den QuickTime-Player (Abspielen, Anhalten, Stoppen, Vor- und Zurückspringen usw.) mit großem Erfolg zu steuern, obwohl mein Wissen über AppleScript sehr begrenzt ist. Was ich jedoch am meisten will, ist der Offset des aktuellen Films, der in Zeitstempel umgewandelt wird, um ein Untertitelscript zu schreiben.
Die folgende einfache Methode zeigt die genaue aktuelle Position in (Gleit-) Sekunden in einem Dialog, aber ich würde wirklich gerne das AppleScript zu zurück mir ein Variable , die ich im Rest der App verwenden kann. Wie kann ich den Code unten ändern, um das zu tun? Ist es überhaupt möglich, auf diesen Wert zuzugreifen? Vielen Dank im Voraus: -)
%Vor%Hier ist das passende AppleScript, das Sie ausführen möchten:
%Vor% Falls Sie nicht damit vertraut sind, ist property
eine Möglichkeit, eine globale Variable in AppleScript anzugeben. Außerdem ist missing value
das AppleScript-Äquivalent von nil
in Objective-C. Daher definiert dieses Skript zuerst eine Variable namens currentPosition
und legt den Wert auf missing value
fest. Anschließend wird der Block tell
eingegeben, der bei Erfolg die Variable currentPosition
ändert. Dann gibt es außerhalb des Tell-Blocks die Variable currentPosition
zurück.
Wenn Sie im Objective-C-Code eine NSAppleScript
mit dem obigen Code erstellen, gibt die Methode -executeAndReturnError:
die Variable currentPosition
in NSAppleScriptEventDescriptor
zurück.
Sie können den Inhalt von NSAppleEventDescriptor
wie oben gezeigt extrahieren.
Die Verwendung des Scripting Bridge-Frameworks hat eine leichte Lernkurve, würde aber erlauben, mit nativen Typen wie NSNumber
s zu arbeiten, anstatt den etwas "unordentlicheren" Weg zum Extrahieren der rohen Bytes aus dem AppleEvent-Deskriptor zu gehen / p>
Verwenden Sie Scripting Bridge . Dies ist eine Brücke zwischen AppleScript und Objective-C, und andere Anwendungen (z. B. QuickTime Player) werden in Ihrem Code als Objectve-C-Objekt dargestellt. Sie müssen den AppleScript-Code nicht manuell erstellen.
Manche sagen, AppScript ist besser als Scripting Bridge.
NSAppleEventDescriptor verfügt über einige Methoden zum Konvertieren in einige Objective-C-Typen. Wenn Sie zu meiner Site gehen und das NDScript-Projekt herunterladen, hat es eine Kategorie von NSAppleEventDescriptor, die dem Objective-C-Typ viel mehr Methoden zum Nötigen hinzufügt. Sie können diese Kategorie ohne den Rest des Projekts verwenden. Ссылка
Tags und Links objective-c applescript