【问题标题】:Core Data - Managed object question核心数据 - 托管对象问题
【发布时间】:2010-12-19 17:31:28
【问题描述】:

我有 2 个关于 Core Data 的基本问题;

  1. 到底什么是托管对象——它是否等同于一个类的实例。例如,如果有一个名为 Shape 的实体具有诸如 no of side & color 之类的属性,并且如果有 5 个条目显示在一个表中,这是否意味着有 5 个托管对象,每个对象都具有属性 no。边和颜色。我对这个基本概念有点困惑。

  2. Fetched Results Controller (FRC) 和表视图之间究竟有什么关系?我知道委托方法,但表格视图究竟如何影响/与 FRC 相关?

任何基本示例都会非常有用。谢谢。

【问题讨论】:

    标签: objective-c core-data


    【解决方案1】:

    第一季度。托管对象是应用程序持久化的某个实体的表示。它只是远离实际持久类型的通用抽象。所以你说托管对象将具有与具体类型相同的键/属性是正确的。由于 NSManagedbject 类实现了键值编码模式,您可以在运行时查询它的键/值...

    - (id)valueForKey:(NSString *)key
    

    有关 NSManagedObject 的完整文档,请参阅 here

    第二季度。获取的结果控制器就是你的 UIViewController 对你的 UIView 的作用。它包含控制表视图持久性的逻辑。它在生活中的唯一目的是将数据库处理逻辑排除在 UITableView 之外。它通过允许您定义要在 UITableView 的上下文中执行的行为来实现。我的意思是它的委托提供了带有明确暗示对 UITableView 的影响的签名的方法。

    【讨论】:

    • 您能否用更简单的术语解释一下。我不是一个非常高级的 Obj-C 用户。
    • 每次从持久存储中获取“实体”时,您都需要一种访问它们属性的方法。 NSManagedObject 只是单个“实体”数据的包装器。它允许您使用 valueForKey: 和 setValue:forKey: 访问它的属性。我发现很容易将 NSManagedObjects 视为一种掩蔽在当前获取的实体上的接口,它允许我像“普通”对象一样使用它们。
    【解决方案2】:

    第一季度。是的,有 5 个托管对象可供您使用。如果您愿意,可以将所有五个放在一个数组中。托管对象只是一个术语,表示您有代码来管理数据库中的插入、更改和删除操作 - 换句话说,一些代码在其生命周期中对其进行管理。您通过 FRC 来处理它,FRC 从数据库中 ^fetches^ 对象的实例,并允许您的代码 ^control^ ^result^ 发生的情况。因此得名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-31
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多