如何从 CoreData-Entities 获取一些值到代码中
Posted
技术标签:
【中文标题】如何从 CoreData-Entities 获取一些值到代码中【英文标题】:How to get some values from CoreData-Entities to code 【发布时间】:2009-01-29 20:33:13 【问题描述】:我在我的 CoreData 应用程序中创建了一个具有一些属性的实体。想象一个 tableview 和一个绑定的 NSArrayController。我创建(和编辑)我的实体“实例”。我的问题是如何将这些属性的值添加到我的代码中。如有更多问题:http://twitter.com/xP_ablo
【问题讨论】:
【参考方案1】:您需要以某种方式获取对 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];
你现在可以对数组中的值做你想做的事了。
【讨论】:
如果您不自己加载笔尖,那么说您不需要@property 和@synthesize 是否正确? NIB 加载代码将直接连接实例变量,但根据 mmalc 的说法,使用上面显示的模式是唯一保证在 GC 和非 GC 环境中正确处理内存管理的模式。【参考方案2】:如果我没看错,你有一个 TableView,绑定到一个绑定到你的数据的 NSArrayController。
简单的方法:在您的类(通常是文件的所有者)中创建一个 IBOutlet,然后在 Interface Builder 中将此 IBOutlet 连接到 NSArrayController。然后你可以从这个数组中获取你需要的值。
【讨论】:
以上是关于如何从 CoreData-Entities 获取一些值到代码中的主要内容,如果未能解决你的问题,请参考以下文章