2010-06-16 85 views
2

所以我有一个.xcdatamodel与约十二个实体定义和相互关联,具有属性等。到目前为止,我一直在使用NSTableViews来显示/输入数据,以及为每个实体实例化的NSArrayControllers。这一切都很好。他们都配合应用程序委托的托管对象上下文(MOC)核心数据,托管对象上下文,NSArrayController ..把我拉直一点

但现在我试图以编程方式访问这些数组中的数据,我发现它这样做是钝的。经过大量的阅读,看起来我应该做的是去MOC为给定的实体提取数据。我还没有完成这个工作,但是没问题。

我不明白,但是,当我不通过NSTableView等进入而不使用NSArrayControllers时,如何使用核心数据。就像我想完全处理我的项目Model包中的一些.xcdatamodel实体(不涉及GUI)。我是否还需要实例化一个NSArrayController,以便我可以“准备一个实体的内容”并对其进行管理和初始化,以及所有这些?或者还有另外一种方法可以直接与MOC配合,并为给定的实体添加/删除/获取数据?

我想说的是,我真的不清楚应该如何进行工作的事情,除非我做一些简单的情况下查看< - > NSArrayController的,然后模型< - >商务部

回答

2

您应该采取请在NSManagedObjectContext上查看NSFetchRequestexecuteFetchRequest:error:方法。

通过阵列控制器访问数据可能会非常棘手。我发现数组控制器通常设计用于UI元素。数组控制器将使用一些技巧来保持UI快速。例如,它将在后台线程上获取项目。其中大部分都可以进行配置,但是访问自己获取的信息会更好。

2

NSArrayController和相关的类旨在用作现成的MVC设计控制器。因此,他们唯一的实际功能是将用户界面与数据模型链接起来。如果您需要另外处理模型,您通常会以编程方式进行。

要以编程方式访问模型,通常首先使用获取请求(NSFetchRequest)来查找某些实体的相应实例。然后,您将遍历实体关系以查找与获取实体相关的实体的所有其他实例。

例如:假设您有一个计划类型的应用程序。你的实体是日子和事件。每天有几个活动,但每个活动只有一天。

如果您想检查一周的事件,您可以获取日期属性感觉在7天范围内的日期对象。然后,你会每天向对象询问其相关事件。

iOS尚不支持绑定,因此请查看在此处使用Core Data的资源,以了解如何手动管理所有这些内容。

+0

这和其他答案都留下了关于我的提取请求的答案。 但是,问题仍然存在:我如何才能让这些数据“创建”。例如,我有实体的日子和事件。我的应用程序如何知道他们将被关在某个MOC中?我如何用这些类型的新实体填充MOC?我是否会获得免费设立的反向关系? 幸运的是没有进行iOS开发,所以复杂性可以忽略 – Nektarios 2010-06-16 15:31:02

+1

你是否说你不知道如何绑定到提供的控制器的核心数据?如果是这样,我会推荐Apple文档中的核心数据编程指南开始。如果你不使用UI,你不会免费获得很多东西。程序化访问需要编程以及所有的细节。 – TechZen 2010-06-16 19:53:38

相关问题