Как мне создать электронную таблицу 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.

Другие вопросы по тегам