Параметр open
обработчика получает список объектов- alias
1. Фигурные скобки ({}
) в вашем сообщении об ошибке указывают на то, что ошибка произошла во время попытки обработки объекта списка.
Таким образом, вам нужно использовать что-то вроде set FolderPath to first item of the_dropped_folder
для работы с одним элементом вместо списка (и, вероятно, присваивайте параметру имя во множественном числе, пока вы его используете, чтобы он «читался лучше»). Это должно позволить правильной работе вашего set ParentPath to container of FolderPath
оператора FolderPath .
Следующее утверждение, вероятно, потерпит неудачу. ParentPath
будет объектом folder
Finder, у которого нет свойства POSIX path
. Обычно самый простой способ обойти эту проблему - заставить Finder преобразовать свой объект item
(folder
является подклассом item
) в объект alias
а затем извлечь его POSIX path
(объекты alias
действительно имеют свойство POSIX path
).
Если вы соберете все это вместе, у вас может получиться что-то вроде этого:
on open someDroppedAliases
set theAlias to first item of someDroppedAliases
tell application "Finder"
set parentFolder to container of theAlias
set parentFolderAlias to parentFolder as alias
end tell
set parentFolderPath to POSIX path of parentFolderAlias
display dialog "Path of container:" default answer parentFolderPath
end open
Без всех промежуточных переменных:
on open someDroppedAliases
tell application "Finder" to ¬
set parentFolderPath to POSIX path of ¬
(container of first item of someDroppedAliases as alias)
display dialog "Path of container:" default answer parentFolderPath
end open
Или с помощью системных событий (чьи объекты- item
действительно имеют свойство POSIX path
):
on open someDroppedAliases
tell application "System Events" to ¬
set parentFolderPath to POSIX path of ¬
container of first item of someDroppedAliases
display dialog "Path of container:" default answer parentFolderPath
end open
Примечание. Ничто в моих версиях (или в вашей первоначальной формулировке) не относится к обработке папок. Эта же программа обработает удаленный файл и выдаст его контейнер.
1 Технически они являются объектами «class bmrk»
в Snow Leopard, которые, похоже, работают в основном как правильные объекты alias
(хотя могут быть некоторые отличия от истинных объектов alias
).