【发布时间】:2009-01-29 20:33:13
【问题描述】:
我在我的 CoreData 应用程序中创建了一个具有一些属性的实体。想象一个 tableview 和一个绑定的 NSArrayController。我创建(和编辑)我的实体“实例”。我的问题是如何将这些属性的值添加到我的代码中。如有更多问题:http://twitter.com/xP_ablo
【问题讨论】:
标签: cocoa core-data key-value-observing nsarraycontroller
我在我的 CoreData 应用程序中创建了一个具有一些属性的实体。想象一个 tableview 和一个绑定的 NSArrayController。我创建(和编辑)我的实体“实例”。我的问题是如何将这些属性的值添加到我的代码中。如有更多问题:http://twitter.com/xP_ablo
【问题讨论】:
标签: cocoa core-data key-value-observing nsarraycontroller
您需要以某种方式获取对 NSArrayController 的引用。如果您自己加载 NIB,则可以将 IBOutlet 实例添加到设置为 NIB“文件所有者”的类中。当您加载一个 nib 时,您将提供该 NIB 的“文件所有者”类的实例作为所有者。如果您没有自己加载 NIB(即它由 Cocoa 作为应用程序的 MaineMenu nib/xib 自动加载),则在 nib 中创建您自己的类的实例并将 IBOutlet 添加到该实例。您可以像这样在您的班级中创建一个 IBOutlet:
@interface MyClass : NSObject { //of course your class doesn't have to be a direct descendent of NSObject
IBOutlet NSArrayController *arrayController;
}
@property (retain,nonatomic,readwrite) IBOutlet NSArrayController *arrayController;
...
@end
@implementation
@synthesize arrayController;
- (void)dealloc {
[arrayController release];
[super dealloc];
}
@end
将您的类中的 IBOutlet 连接到 NSArrayController(在第一种情况下按住 Controll 单击文件所有者或在上述第二种情况下单击您的类的实例)并拖动到 NSArrayController。当您释放鼠标时,您将在拖动源中弹出 IBOutlets。选择您创建的 IBOutlet(例如上例中的“arrayController”)。
一个笔尖被加载(即在你的类中调用awakeFromNib之后),你可以通过插座访问arrayController:
NSArray *content = [[self arrayController] arrangedObjects];
你现在可以对数组中的值做你想做的事了。
【讨论】:
如果我没看错,你有一个 TableView,绑定到一个绑定到你的数据的 NSArrayController。
简单的方法:在您的类(通常是文件的所有者)中创建一个 IBOutlet,然后在 Interface Builder 中将此 IBOutlet 连接到 NSArrayController。然后你可以从这个数组中获取你需要的值。
【讨论】: