关于核心数据模型关系

时间:2012-06-11 04:01:49

标签: iphone objective-c ios ipad core-data

我试图在CoreData建模中理解关系的概念,并且很难理解什么实体可以很好地建立关系。有没有办法为一个可以对应另一个实体的关系生成一个唯一的数字?因此,假设我有一个新的实体条目,它将具有关系信息的唯一编号101,并且细节也将创建101,因此可以以某种方式具有完整的对应关系。不确定CoreData模型是否已将其整理为具有某种生成器以为这两个实体生成唯一值。

由于

2 个答案:

答案 0 :(得分:1)

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返回共享该地址的人数。你看到的是一个对象图。

核心数据为每个实体提供某种唯一ID,一旦实体至少保存,objectID,一个不透明的NSManagedObjectID。您可能会更好地使用URIRepresentation(再次,实体保存后)。如果您打算创建跨店关系,则可以使用URIRepresentation或使用您自己的唯一ID。维护每个实体的唯一ID,甚至是每个商店的唯一ID都相当容易。

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

答案 1 :(得分:0)

您可能需要阅读Core Data Programming Guide以便更好地理解。

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

因此,假设您有一个Company,其中有Employee个。{您可以为这两种类型创建实体,并在公司和员工之间建立一对多关系(如果员工为多家公司工作,甚至可以建立多对多关系)。

使用核心数据,您可以轻松添加,删除或以其他方式访问给定公司的员工。

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

相关问题