gpt4 book ai didi

objective-c - 在 Cocoa 应用程序中定义和执行简单的 AppleScript 命令

转载 作者:太空狗 更新时间:2023-10-30 03:44:26 24 4
gpt4 key购买 nike

我正在尝试向我编写的 Cocoa 应用程序添加一些脚本功能。我为我的项目创建了一个 sdef(脚本定义文件)。到目前为止,我已经成功地使用 AppleScript 访问对象子项(元素),但我终究无法弄清楚如何调用方法(命令)。

这是我的 sdef 文件。

<suite name="mySuite" code="mSUI" description="My Application Suite">
<class name="application" code="capp" description="Top level scripting object.">
<cocoa class="NSApplication"/>
<!-- I can access these elements fine -->
<element description="Test children." type="child" access="r">
<cocoa key="myChildren"/>
</element>
<!-- Cannot seem to call this method :( -->
<responds-to command="testmethod">
<cocoa method="exposedMethod:"/>
</responds-to>
</class>
<class name="child" code="cHIL" description="A Child." plural="children">
<cocoa class="Child"/>
<property name="name" code="pnam" description="The child name." type="text" access="r">
<cocoa key="name"/>
</property>
</class>
<command name="testmethod" code="tEST" description="Execute the test method" />
</suite>

这是我的 Controller 类实现(这是我的应用程序的委托(delegate))

MyController.h

#import <Cocoa/Cocoa.h>

@interface MyController : NSObject {
NSMutableArray* myChildren;
}
// Some Methods

@end

MyController+Scripting.m

#import "MyController+Scripting.h"

@implementation MyController (Scripting)

// This works when I'm accessing the myChildren
- (BOOL)application:(NSApplication*)sender delegateHandlesKey:(NSString*)key {
NSLog(@"Key = %@", key);
return ([key isEqualToString:@"myChildren"]);
}
// This does NOT work...
- (void)exposedMethod:(NSScriptCommand*)command {
NSLog(@"Invoked Test Script Method %@", [command description]);
}

@end

最后,我正在尝试的 AppleScript 是:

tell application "MyApplication"
testmethod
end tell

它以 “AppleScript 错误 - undefined variable testmethod”作为响应。

知道我在这里做错了什么吗?我觉得我错过了一些简单的东西,但我的谷歌搜索似乎没有找到任何有用的东西。

最佳答案

事情看起来大部分是正确的,但是 <command/> 的代码应该是一个由两部分组成的代码(八个字符)而不是四个。

关于objective-c - 在 Cocoa 应用程序中定义和执行简单的 AppleScript 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1173509/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com