1

我试图理解CoreData建模中关系的概念,并且很难理解什么实体可能是建立关系的良好感觉。有没有办法为可以对应另一个实体的关系生成唯一编号?所以假设我有一个新的实体条目,它将有一个用于关系信息的唯一编号 101,并且详细信息也将创建 101,因此可以以某种方式保持对应关系完好无损。不确定CoreDataModel 是否已经整理出某种生成器来为两个实体生成唯一值。

谢谢

4

2 回答 2

1

Core Data 是一个高级库,其目的是尽可能透明地管理和持久化对象图。Core Data 如何链接数据库中的对象(顺便说一下,它不一定是数据库)是一个实现细节。

在模型编辑器中,您只需创建所需的实体并将它们与关系链接。Core Data 为您管理连接。

Person:
- first_name: string
- middle_name: string
- last_name: string
- private_address: -> Address (to-one relationship)
- work_address: -> Address (to-one relationship)

Address:
- persons: ->> Person (to-many relationship, you may want to reuse an address)
- address1: string
- address2: string
- zip: string
- city: string
- country: string    
...

person.first_name 会返回此人的名字,而 person.private_address.city 会轻松返回此人的居住城市。address.persons 返回所有共享相同地址(私人或/和工作)的人,作为 NSSet。address.persons.count 返回有多少人共享该地址。你看到的是一个对象图。

Core Data 为每个实体提供了某种唯一的 ID,一旦实体至少被保存,objectID,一个不透明的 NSManagedObjectID。URIRepresentation 可能会更好地为您服务(同样,一旦实体被保存)。如果您的意图是创建跨商店关系,则可以使用 URIRepresentation 或使用您自己的唯一 ID。维护每个实体的唯一 ID 甚至每个商店的唯一 ID 都相当容易。

但大多数时候,您不必处理如此低级别的问题。Core Data 非常擅长为您管理关系。

于 2012-06-11T09:18:20.287 回答
0

您可能需要阅读Core Data Programming Guide以获得更好的理解。

如果您来自 SQL 背景,关系基本上代表一个FOREIGN KEY或连接表,相互映射对象。

所以假设你有一个Company有很多Employees的。您为这两种类型创建实体,并在公司和员工之间建立一对多的关系(如果员工为多家公司工作,甚至是多对多)。

使用 Core Data,您可以轻松地添加、删除或以其他方式访问给定公司的员工。

因此,一种关系用于将实体的实例相互关联。

于 2012-06-11T09:22:27.023 回答