Cocoa Scripting: Zurückgeben der geklonten Objekte von einem "doppelten" Befehl

Das AppleScriptduplicateer 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.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage