Cocoa Scripting: Zurückgeben der geklonten Objekte von einem "doppelten" Befehl
Das AppleScriptduplicate
er Befehl @ soll die kopierten Objekte zurückgeben.
Und während Apps, die die ursprünglichen AE-basierten Funktionen verwenden, dies zu tun scheinen, scheinen Apps, die auf dem Cocoa Scripting-Framework basieren, niemals etwas anderes als @ zurückzugebefehlender Wer.
Es scheint, dass der Befehlshandler vonNSCloneCommand
ist dafür verantwortlich, dass die Bezeichner für die geklonten Objekte nicht zurückgegeben werden.
Ich habe versucht, dies in meiner skriptfähigen App zu beheben, indem ich den Befehl in Unterklassen unterteilt, die geklonten Objektbezeichner gesammelt und sie dann zurückgegeben habe.
Dies funktioniert gut, wenn nur ein Element dupliziert wird.
Es funktioniert auch, wenn mehrere Elemente zusammen mit dem @ geklont werdeto
Parameter mit dem Befehl (wie induplicate every widget to end
): Dann kann ich einen Bezeichner vom Typ @ zurückgebNSRangeSpecifier
bezeichnet das erste und letzte dieser geklonten Elemente.
Wenn Sie jedoch den Befehl duplicate für mehrere Elemente verwenden,ohn dasto
parameter, dann werden die Elemente in einem @ in das Array sortie nicht aufeinanderfolgende Weise. Wenn es zum Beispiel anfänglich 2 "x" Elemente mit der ID 1 und 2 gibt,duplicate every x
fügt eine Kopie jedes Elements direkt nach dem Original ein, sodass diese in der folgenden Reihenfolge vorliegen: 1, 3, 2, 4.
Jetzt,wie würde man einen Bezeichner dafür zurückgeben, d. h. einen Bezeichner für die Punkte 3 und 4?
In den Unterklassen von @ gibt es keinen "Listen" -SpezifizierNSScriptObjectSpecifier
, und ich kann nicht für jede Person ein NSArray zurückgebenNSScriptObjectSpecifier
entweder scheint es. Und währendNSAppleEventDescriptor
unterstützt die Erstellung von Listen. Ich kann nicht herausfinden, wie ich die Objektspezifizierer in NSAppleEventDescriptors konvertieren würde.
Wie kann ich dieses Problem lösen, ohne eine fortlaufende Reihenfolge der geklonten Objekte zu erzwingen? (Dies würde bedeuten, dass ich das @ erneut implementieren müsstNSCloneCommand
's Betrieb ganz, ich fürchte,).
BTW, Mark Aldritt, Autor von Script Debugger, bestätigt das Problem Dasduplicate
(ebenfalls:move
, open
) Werte nicht so zurückgeben, wie sie sollen.