【问题标题】:Core Data, managed object context, NSArrayController.. straighten me out a bit核心数据,托管对象上下文,NSArrayController ..让我理顺一下
【发布时间】:2010-06-16 14:23:09
【问题描述】:

所以我有一个 .xcdatamodel,其中包含大约十几个定义并相互关联的实体,以及属性等等。到目前为止,我一直在使用 NSTableViews 来显示/输入数据,以及我为每个实体实例化的 NSArrayControllers 尝试将其放入 GUI 中。这一切都很好。它们都与 App Delegate 的托管对象上下文 (MOC) 相关联

但现在我尝试以编程方式访问这些数组中的数据,但我发现这样做很迟钝。经过大量阅读之后,看起来我真正应该做的是去 MOC 获取给定实体的数据。我还没有解决这个问题,但是好的。

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

我的意思是,我真的不清楚如何处理事物,除非我正在做简单的案例 View NSArrayController 然后是 Model MOC

【问题讨论】:

    标签: cocoa core-data


    【解决方案1】:

    您应该看看NSFetchRequestNSManagedObjectContext 上的executeFetchRequest:error: 方法。

    通过数组控制器访问数据可能很棘手。我发现数组控制器通常设计为与 UI 元素一起使用。数组控制器将使用一些技巧来保持 UI 简洁。例如,它将在后台线程上获取项目。其中大部分都可以配置,但您最好通过自己的获取来访问信息。

    【讨论】:

      【解决方案2】:

      NSArrayController 和相关类旨在用作现成的 MVC 设计控制器。因此,它们唯一真正的功能是将 UI 链接到数据模型。如果您需要以其他方式处理模型,则通常以编程方式进行。

      要以编程方式访问模型,您通常从获取请求 (NSFetchRequest) 开始,以查找某些实体的适当实例。然后,您将遍历实体关系以查找与获取的实体相关的所有其他实体实例。

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

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

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

      【讨论】:

      • 这个和另一个答案都回答了我的 Fetch 请求。但是,问题仍然存在:我该怎么做才能“创建”这些数据。例如,我有实体日和事件。我的应用程序如何知道它们将在某个 MOC 中举行?如何使用这些类型的新实体填充 MOC?我会免费获得诸如反向关系之类的东西吗?幸好没有做 iOS 开发,所以可以忽略复杂性
      • 你是说除了如何绑定到提供的控制器之外你对Core Data一无所知吗?如果是这样,我会推荐 Apple 文档中的核心数据编程指南开始。如果您不使用 UI,您将无法免费获得很多东西。编程访问需要,嗯,编程,以及所有暗示的细节。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-27
      • 1970-01-01
      相关资源
      最近更新 更多