Rückgabewert von AppleScript in Obj-C

7

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%     
Bender 24.07.2011, 02:08
quelle

3 Antworten

17

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.

%Vor%

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>     

NSGod 24.07.2011, 06:12
quelle
1

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.

    
Yuji 24.07.2011 02:28
quelle
1

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. Ссылка

    
Nathan Day 24.07.2011 06:15
quelle

Tags und Links