2013-03-24 4 views
3

Я использую NSUserScriptTask для запуска скриптов, размещенных пользователем в каталоге Application Scripts. Тем не менее, мне трудно узнать, какие известные типы скриптов принимают NSUserScriptTask, а docs тоже не помогают ... Любые идеи?NSUserScriptTask: принятые типы файлов?

До сих пор я попытался это:

  • .sh
  • .applescript
  • .scpt
  • .scptd
  • .txt

И coudn't заставить любой из них работать (метод initWithURL:error: возвращает ноль)

EDIT: Я забыл указать ошибку! Глупый меня ... Вот что печатается на бревне:

Error Domain=NSCocoaErrorDomain Code=259 "The file “Untitled.applescript” couldn’t be opened because it isn’t in the correct format." UserInfo=0x100121f50 {NSURL=file://localhost/Users/path to file/Untitled.applescript, NSFilePath=/Users/path to file/Untitled.applescript} 
+0

Что вы подразумеваете под «не могли получить ... их работать»? –

+1

@PeterHosey Я обновил вопрос с ошибкой, которую я получил – Alex

ответ

1

The documentation for NSUserScriptTask утверждает, что инстанцировании этот класс непосредственно будет работать на любой действительный файл и вернуть соответствующий вид задачи:

Возвращаемый объект будет иметь один из конкретных подклассов (NSUserUnixTask, NSUserAppleScriptTask и NSUserAutomatorTask), или nil, если файл не соответствует ни одному из известных типов.

При вызове из подкласса результатом будет этот класс или nil.

На самом деле, я обнаружил, что (по 10.8.2) NSUserScriptTask безоговорочно возвращает nil и «что это я даже не» ошибка. Кажется, что вам нужно создать экземпляр правильного подкласса задачи самостоятельно. Возможно, стоит filing a bug.

Чтобы проверить, является ли файл использоваться в качестве задачи сценария (например, в методе проверки Open панели), все, что я могу предложить попробовать инстанцировании каждый из трех классов, возвращая YES, если любой из них успешно и NO если все они терпят неудачу.

+0

Отлично! Это сделало трюк, за исключением того, что мы теперь должны найти, какие типы файлов приняты ... Я нашел, что они: .applescript .scpt .scptd .workflow, но .sh не принимается NSUserUnixTask, и я понятия не имею, что это такое. .. – Alex

+0

@Alex: Смотрите мой последний абзац. –

+0

Да, я знаю, но я хотел бы заранее сообщить пользователю, какие типы файлов поддерживаются, и я просто хотел знать, есть ли у вас какие-либо идеи по этому поводу. Конечно, я буду использовать ваш метод для тестирования программ программно. – Alex