【发布时间】:2012-01-17 23:13:43
【问题描述】:
我是一名 .net 开发人员,正在尝试学习如何在 Mac 上进行可可编程。我遇到了一个我似乎无法弄清楚或找不到答案的问题。
我创建了以下类:
-
ITObject- NSObject 的子类 -
ITPlayer- ITObject 的子类 -
ITEnemy- ITObject 的子类
在我的MainMenu.xib 文件中,我有一个包含以下控件的窗口:
-
NSArrayController- 链接到 App Delegate (itObjects) -
NSTableView- 链接到 NSArrayController (arrangedObjects) -
NSTextBox- 链接到同一个 NSArrayController (selection.player)
itObjects 是一个 NSMutableArray,我用它来包含任何 ITObject 类。 NSArrayController 设置为使用 ITObject 作为类。当我将 ITPlayer 添加到 itObjects 属性时,文本框不会读取 player 属性。
播放器属性是 ITPlayer 独有的。如果播放器属性不是类的一部分,我想在文本框中显示“N/A”,如果存在,我希望绑定显示该值。现在,它什么都不做。
关于对象的更多信息:
项目的代码如下所示:
@interface ITObject:NSObject <NSCoding>{
int initiativeRoll, initiativeBonus, initiativeKicker;
}
@property int initiativeRoll, initiativeBonus, initiativeKicker;
@property (readonly) int initiativeTotal, initiativeCalc;
@end
这是 ITObject 的头文件(显然)。 ITEnemy 和 ITPlayer 是这样设置的(仅到目前为止)。
@interface ITPLayer:ITOjbect <NSCoding>{
NSString *player;
}
@property (copy) NSString *player;
@end
ITPlayer 的 init 方法在实现文件中设置如下:
- (void)init{
self = [super init]
if (self){
player = @"undefined";
}
return self;
}
还有一个 initWithCoder: 方法,但是我还没有使用过,所以我不认为这是可疑的。
非常感谢您的帮助!
【问题讨论】:
-
你的描述很好。建议您包含代码,以便更轻松地帮助您调试。
-
真的没有很多代码可以展示。大多数 ITObject 有几个属性,而 ITPlayer 和 ITEnemy 还有一些。我认为这与我对 Cocoa Bindings 缺乏了解有关……而且我不知道如何发布,哈哈。
标签: objective-c xcode cocoa cocoa-bindings