Как мне создать электронную таблицу Numbers, используя target-c?
Я пишу приложение Cocoa, и я хотел бы создать электронную таблицу Numbers из моего приложения, используя Scripting Bridge. Я сгенерировал файл Numbers.h и связал ScriptingBridge.framework в соответствии с указаниями в документации Apple. Ниже приведен код, который я использую, чтобы попытаться просто создать документ Numbers и сохранить его.
NSString *path = @"/Users/username/Desktop/Test.numbers";
NumbersApplication *numbers = [SBApplication applicationWithBundleIdentifier:@"com.apple.iWork.Numbers"];
[numbers activate];
NumbersDocument *document = [[[numbers classForScriptingClass:@"document"] alloc] initWithProperties:[NSDictionary dictionaryWithObjectsAndKeys:project.title, @"name", nil]];
[[numbers documents] addObject:document];
[document saveAs:nil in:[NSURL URLWithString:path]];
Код компилируется и запускается, и когда я пробую метод saveAs:in:, я получаю следующую ошибку:
- [SBProxyByClass saveAs:in:]: объект еще не добавлен в контейнер; селектор не распознан [self = 0x2005912e0]
Есть ли что-то еще, что я должен сделать, кроме добавления документа в массив [numbers documents]?
Я открыт для использования Apple Script, но я бы предпочел использовать Scripting Bridge, если смогу.
2 ответа
Эхх, Сценарии Чисел с SB; два черных искусства по цене одного. Я бы предложил сначала сделать это в AppleScript, чтобы немного сузить проблему.
Если в AS он тоже сломается, либо вы неправильно сформулировали команды, либо проблема в Numbers. Поскольку большинство сценариев приложений используют AppleScript, вам будет проще получить помощь, если вы сможете представить код, который они будут распознавать.
Если это работает, то либо ваш перевод команд в ObjC неверен, либо есть проблема в SB. Наличие рабочего примера в AS обеспечит отправную точку для выяснения, где что-то идет не так.
Вы также можете взглянуть на objc-appscript, который предоставляет более надежную, менее запутанную альтернативу SB. Его инструмент ASTranslate позволяет легко переводить рабочие команды AS в синтаксис ObjC.
Numbers пока не поддерживает создание документов через Applescript. Вы должны использовать сценарии GUI. Предполагается, что новая версия Numbers выйдет 6 января 2011 года и (будем надеяться) исправит крайне ограниченную поддержку Applescript.