这里只是简介,不是教程,仅是写出了自己的一些疑问。
CoreData与SQLite对比
SQLite:
1、基于C接口,需要使用SQL语句,代码繁琐
2、在处理大量数据时,表关系更直观
3、在OC中不是可视化,不易理解
CoreData:
1、可视化,且具有undo/redo能力
2.可以实现多种文件格式:NSSQLiteStoreType、NSBinaryStoreType、NSInMemoryStoreType、NSXMLStoreTyp
3、苹果官方API支持,与iOS结合更紧密
CoreData中的核心对象
database.png
@property (nonatomic, strong) NSManagedObjectModel *managedObjectMode;
@property (nonatomic, strong) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, strong) NSPersistentStoreCoordinator *persistentStoreCoordinator;
创建managedObjectMode
的几种方式
第一种:
在创建后缀为.xcdatamodeld
的模型文件后,模型文件在编译期将会被编译为后缀为.momd
的文件,存放在.app中,也就是Main Bundle
中。在存在多个模型文件时,我们需要通过加载不同的.momd
文件,来创建不同的NSManagedObjectModel
对象,每个NSManagedObjectModel
对应着不同的模型文件。
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"DBName" withExtension:@"momd"];
self.managedObjectMode = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
第二种:
self.managedObjectMode = [NSManagedObjectModel mergedModelFromBundles:nil];
这里的的nil表示连接项目中所有的 .xcodemodel
文件为一个datamodel
,这是一个非常好的方法,把多个entity
放在各自的xcodemodel
文件中分开管理,然后用这个函数连接起来生成一个datamodel
,这样就可以对应一个persistentStore
。
反正增删查改的时候也需要指定实体的名字,所以是不是这两种方法就差不多了,第一种指定了特定的文件,第二种根据实体名字查找文件,
我理解的大概就是酱紫,有大神看到可以给评论,然后我立马更正。
剩下的managedObjectContext、persistentStoreCoordinator;
初始化方法大家就百度去吧,哈哈一百度一大把。