点击加号,可以添加关联关系,在inverse这个属性代表两个实体在Relationships设置关联关系后之后,是否可以从一个实体中找到另一个实体,这样使两个实体具有双向的关联关系。
(5)Editor Style
大家通过点击下面红色按钮,style按钮可以看出实体和属性的关系,以及可以看出实体之间的对应的关系。
上面是coreData的视图的基本运用,自己也是一个不断摸索的过程,下面讲述CoreData的基本操作。
三、CoreData基本使用
在讲述操作之前,我们首先讲述NSManagedObjectContext,苹果推荐使用initWithConcurrencyType方式创建,在创建时,指定当前是什么类型的并发队列,参数也是一个枚举值。
NSManagedObjectContext枚举值参数有三个类型:
(1)NSConfinementConcurrencyType:此类型在iOS9之后被苹果弃用,所以不建议用这个API。
(2)NSPrivateQueueConcurrencyType:代表私有并发队列的类型,操作也是在子线程中完成的。
(3)NSMainQueueConcurrencyType:代表主并发队列类型,如果在操作过程中,需要涉及到UI操作,则应该使用这个参数初始化上下文完成操作。
下面我们一个company的模型文件-主队列并发类型的NSManagedObjectContext
// 创建上下文对象,并发队列设置为主队列 NSManagedObjectContext *context = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType]; // 创建托管对象模型,并使用Company.momd路径当做初始化参数 NSURL *modelPath = [[NSBundle mainBundle] URLForResource:@"Company" withExtension:@"momd"]; NSManagedObjectModel *model = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelPath]; // 创建持久化存储调度器 NSPersistentStoreCoordinator *coordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model]; // 创建并关联SQLite数据库文件,如果已经存在则不会重复创建 NSString *dataPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject; dataPath = [dataPath stringByAppendingFormat:@"/%@.sqlite", @"Company"]; [coordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:[NSURL fileURLWithPath:dataPath] options:nil error:nil]; // 上下文对象设置属性为持久化存储器 context.persistentStoreCoordinator = coordinator;