我将首先说,就 AppleScript 而言,我是一个完整的新手。所以你在这里...
这是我到目前为止所做的:
- 研究了SimpleScripting的苹果参考资料
- 实现了一个相同的
.sdef
文件 - 设置新属性
myname
- 将主体类(in
info.plist
)设置为ppApplication
(我的主类继承自NSApplication
) - 设置
myname
属性的访问器
我的 sdef 文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dictionary SYSTEM "file://localhost/System/Library/DTDs/sdef.dtd">
<dictionary xmlns:xi="http://www.w3.org/2003/XInclude">
<xi:include href="file:///System/Library/ScriptingDefinitions/CocoaStandard.sdef" xpointer="xpointer(/dictionary/suite)"/>
<suite name="MyApplication Suite" code="PpRm" description="MyApplication Suite">
<class name="application" code="capp" description="MyApplication's top-level scripting object." inherits="application">
<cocoa class="ppApplication"/>
<property name="myname" code="PEnm" description="The name of the application" type="text" access="r">
<cocoa key="myname"/>
</property>
</class>
</suite>
</dictionary>
我的 ppApplication 类:
#import <Foundation/Foundation.h>
#import "ppCore.h"
@interface ppApplication : NSApplication {
ppCore* core;
}
@property (assign) ppCore* core;
@property (readonly) NSString* myname;
@end
#import "ppApplication.h"
@implementation ppApplication
@synthesize core;
- (void)awakeFromNib
{
[self setCore:[[ppCore alloc] init]];
}
/*******************************************************
*
* APPLESCRIPT SUPPORT
*
*******************************************************/
- (NSString*)myname
{
return @"DONE";
}
@end
现在,这是问题:
当我尝试运行以下脚本时(在AppleScript Editor中)
tell application "myApplication"
myname
end tell
我收到一个the variable myname is not defined
错误。
然而 :
如果我回到 Xcode,构建设置并将产品名称更改为 - 比如说 - myApplicationX 并重新编译,那么上面的代码(将其更改为tell application "myApplicationX"
)就可以了。
那么,我做错了什么?AppleScript 编辑器是否可能不会与我对应用程序的活动编译“对话”,而是与之前的应用程序“对话”?在不更改产品名称的情况下如何处理这个问题?