我有一个可可应用程序,我正在尝试使其可编写脚本。它有一个模型类(NSObject 的子类),包括一个 NSArray 属性,该属性包含多个单独类的自定义“元素”对象。我喜欢这个应用程序的这种设计模式,因为模型类的数组属性在该类之外不需要(因此我不想将它包含在 NSApplication 的子类/类别中)。然而,在我看到的所有用于创建可编写脚本的 Cocoa 应用程序的示例中,顶级脚本对象是 NSApplication 的子类或类别,其中包含作为属性或元素的公开数据。
相比之下,我在 NSApplication 中没有任何属性或方法。作为一个简化的示例,请参见下面的代码(来自我项目中的 DataModel.h/DataModel):
#import <Foundation/Foundation.h>
#import "Element.h"
@interface DataModel : NSObject
@property (nonatomic) NSArray *elements;
@end
@implementation DataModel
@synthesize elements = _elements;
- (id)init {
if (self= [super init]) {
Element *element1 = [[Element alloc] init];
element1.elementName = "first element";
element1.elementNumber = "22";
Element *element2 = [[Element alloc] init];
element2.elementName = "second element";
element2.elementNumber = "24";
self.elements = [NSArray arrayWithObjects:element1, element2, nil];
}
return self;
}
@end
和这段代码(对于 Element.h/Element.m - 存储在 ViewController 的“元素”NSArray 中的对象:
#import <Foundation/Foundation.h>
@interface Element : NSObject {
}
@property (nonatomic) NSString *elementName;
@property (nonatomic) NSString *elementNumber;
@end
#import "Element.h"
@implementation Element
@synthesize elementName = _elementName, elementNumber = _elementNumber;
@end
当数据模型是它自己的类时,如何在我的 sdef 文件中使“元素”成为可访问的属性?我需要在 DataModel 或 Element 类中使用对象说明符吗?在这种情况下,NSApplication 不包含任何属性、元素或命令。
谢谢!