Objective c 如何将textfields绑定到包含一行的核心数据实体的属性?
我有一个视图,希望显示我的应用程序的汇总使用数据。很方便,我有一个cocoa核心数据实体,其中预聚合了所有使用数据(因此它只有一行)。我想将实体中的每个单独属性绑定到不同的NSTextFields(例如不在NSTableView中) 这似乎不是核心数据+界面生成器可以很好地处理的使用模式。到目前为止,我所做的是将聚合属性复制到NSUserDefaults中,并将文本字段绑定到默认值。我想要一个更好的,优雅的方式来做这件事 还有更好的主意吗?我需要被一个大大的线索打在头上吗Objective c 如何将textfields绑定到包含一行的核心数据实体的属性?,objective-c,cocoa,core-data,interface-builder,cocoa-bindings,Objective C,Cocoa,Core Data,Interface Builder,Cocoa Bindings,我有一个视图,希望显示我的应用程序的汇总使用数据。很方便,我有一个cocoa核心数据实体,其中预聚合了所有使用数据(因此它只有一行)。我想将实体中的每个单独属性绑定到不同的NSTextFields(例如不在NSTableView中) 这似乎不是核心数据+界面生成器可以很好地处理的使用模式。到目前为止,我所做的是将聚合属性复制到NSUserDefaults中,并将文本字段绑定到默认值。我想要一个更好的,优雅的方式来做这件事 还有更好的主意吗?我需要被一个大大的线索打在头上吗 一如既往地感谢您阅读…
一如既往地感谢您阅读…好的,我只是用自己的大线索撞到了自己的头。
-(void)updateFields {
// fetch the row from the persistent store into your custom object
// then get a reference to the data in your object, e.g.
MyDataObject *data = [resultsArray objectAtIndex:0];
myTextField1.text = [NSString stringWithFormat:@"%d", [data.anIntegerValue intValue]];
myTextField2.text = data.aTextValue;
// etc...
}
解决方案是使用NSObjectController
NSObjectController *dataCtrl;
...
@property (nonatomic, retain) IBOutlet NSObjectController *dataCtrl;
在实施过程中也像这样
@synthesize dataCtrl;
...
- (void)windowDidLoad
{
NSManagedObject *totals = [StatsSupport getTotalRecord];
[[self dataCtrl] setContent:totals]; // where the rubber meets the road
[super windowDidLoad];
}
当然,+[StatsSupport getTotalRecord]是基本的核心数据获取类型代码,如果你读到这里,你就会知道它是什么样子。(它可能已经存在,因为您需要此代码或类似的代码来执行正常的数据读取/更新)
最后做一个快乐的舞蹈,因为你让cocoa为你做了一些工作。你已经看过苹果提供的Recipes core data示例程序了吗?没有。我想你的意思是-,我会检查它的,现在我已经看过了,但是没有,它没有抓到这个特别的痒点。啊,我想我记得在那里看到过类似的东西。数据绑定示例执行我看到的所有绑定示例所执行的操作-通过nsarraycontroller将所有数据绑定到一个表。(然后字段被绑定到数组中选定的对象。)因此,另一种方法是在对话框上有一个隐藏的表…hack hack hack…我猜优雅是指没有代码或几乎没有代码。我现在要做的就是编写这么多代码(将数据复制到用户默认值中)。我试图实现绑定的很少代码潜力。一般来说,objective C是一种相当“冗长”的语言。我有点习惯了。我认为这是有意的,它确实使阅读代码变得更容易。是的,确实很详细——在类中声明,“@property”+“@synthesis”。我同意。Interface Builder是一个可用的gui工具,我希望尽可能多地利用它。。。因此这篇看似不切实际的文章。