Вы пытались создать автономный проект подключаемого модуля Automator или пытались добавить цель пакета Automator в проект своего приложения?
Я предполагаю, что вы хотите создать действия Automator для своего основного приложения, нонеясно, как эти действия взаимодействуют с вашим приложением (или с классами, присутствующими в вашем приложении).
Существует 3 основных типа действий Automator: на основе AppleScript, на основе shell-сценария и Objective-С на основе.Скорее всего, вы захотите создать свой Objective-C, который позволит вам легко включать другой код Objective C из вашего основного приложения в само действие (см. Реализация действия Objective C ),(Обратите внимание, что по умолчанию, когда вы добавляете новую цель для комплекта автоматов, она имеет тип AMAppleScriptAction
).
Чтобы увидеть, как настроено действие автомата Objective C по сравнению с действием на основе AppleScript, вы можете попробовать создать отдельный автономный проект.
Допустим, ваше приложение основано на документе и использует класс KWDocument
, который предоставляет метод с именем -duplicateObjects:(NSArray *)objects toDocument:(KWDocument *)destDocument;
.У вас также есть KWRegistrationManager
, который знает, зарегистрировано ваше приложение или нет.Допустим, вы хотите создать действие автоматизатора, которое называется «Дублировать объекты в документ».Действие будет реализовано в KWDuplicateObjectsToDocument
, который является подклассом AMBundleAction
.В Info.plist для дубликатов объектов в Document.action NSPrincipalClass
будет KWDuplicateObjectsToDocument
.
KWDuplicateObjectsToDocument.h
будет выглядеть примерно так:
#import <Cocoa/Cocoa.h>
#import <Automator/AMBundleAction.h>
@interface KWDuplicateObjectsToDocument : AMBundleAction {
}
- (id)runWithInput:(id)input fromAction:(AMAction *)anAction
error:(NSDictionary **)errorInfo;
@end
И ваш KWDuplicateObjectsToDocument.m
будет выглядеть примерно так:
#import "KWDuplicateObjectsToDocument.h"
#import "KWDocument.h"
#import "KWRegistrationManager.h"
@implementation KWDuplicateObjectsToDocument
- (id)runWithInput:(id)input fromAction:(AMAction *)anAction
error:(NSDictionary **)errorInfo {
if (![[KWRegistrationManager defaultManager] isRegistered]) {
return nil;
}
// eventually you'll call
// duplicateObjects:toDocument:
return input;
}
@end
Вам необходимо убедиться, что необходимые классы, которые вы используете (например, KWRegistrationManager
, KWDocument
и т. д.), скомпилированы и включены как частьпроцесс сборки для этого комплекта.