1

我有一个可可应用程序,我正在尝试使其可编写脚本。它有一个模型类(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 不包含任何属性、元素或命令。

谢谢!

4

0 回答 0