【发布时间】:2014-08-25 12:41:37
【问题描述】:
我编写了一个可以使用 AppleScript 编写脚本的应用程序。现在我可以在 AppleScript 编辑器中编写下一件事了:
tell application "My Magazines"
current magazine
end tell
它返回以下响应:
«class » "The NY Times" of application "My Magazines"
反应正常。我可以提取它的属性并使用magazine 类中定义的方法。唯一困扰我的是«class »,它不太适合人类阅读。我试图找到我需要重写的方法,以便为用户提供更好的方法描述,但找不到。
有没有一种我可以重写的方法来将«class » "The NY Times" 替换为Magazine "The NY Times" 之类的东西?
magazine 在我的 sdef 文件中定义如下:
<class name="magazine" code="sMAG" description="A particular magazine">
<cocoa class="MyMagazine" />
<property name="name" code="pnam" type="text" access="r" description="Title of it">
<cocoa key="name" />
</property>
</class>
类本身定义为:
@interface MyMagazine : NSObject
{
NSString *name;
}
@property (nonatomic, readonly) NSString *name;
@end
并实现如下:
@implementation MyMagazine
@synthesize name;
- (NSScriptObjectSpecifier *)objectSpecifier
{
MyMagazinesList *list = [MyMagazinesList sharedList];
return [[[NSNameSpecifier alloc] initWithContainerClassDescription:(NSScriptClassDescription *)[[list objectSpecifier] keyClassDescription]
containerSpecifier:[list objectSpecifier]
key:@"magazines"
name:name] autorelease];
}
【问题讨论】:
标签: objective-c cocoa applescript