Я не удосужился проверить, но я подозреваю, что ошибка в либо в sdp, либо в скриптовом мосту, когда команды с параметрами ключевого слова нацелены на главный application
объект, которому присваивается одно имя метода по sdp (например, -newAlbumName:
) и другое имя метода по SB (-newAlbum:name:
). Поскольку вы не можете взломать SB, вам нужно исправить сгенерированный sdp заголовок, чтобы использовать последний метод и передать nil в качестве первого аргумента.
В качестве альтернативы, вы можете использовать appscript , который более способен и менее подвержен проблемам совместимости приложений, чем SB. Это также обеспечивает лучшие инструменты разработки и поддержку. например Запуск вашего AppleScript через сопровождающий инструмент ASTranslate приводит к следующему коду objc-appscript:
#import "IPGlue/IPGlue.h"
IPApplication *iphoto = [IPApplication applicationWithName: @"iPhoto"];
IPNewAlbumCommand *cmd = [[iphoto newAlbum] name: @"Test"];
id result = [cmd send];