如何从 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 获取一些值到代码中的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Sqlite 获取最后一条记录?

如何从二维 java 数组中获取一列?

如何使用 pyspark 从列表中获取最后一项?

如何从 Firebase 获取一组对象?

如何从 DataTable 中获取一列值的列表?

如何使用 Hibernate 从 Mysql 获取最后一条记录?