一、配置上下文时主要类和方法:
NSPersistentStoreCoordinator 持久化调度器:
- (NSPersistentStore *)addPersistentStoreWithType:(NSString *)storeType configuration:(NSString *)configuration URL:(NSURL *)storeURL options:(NSDictionary *)options error:(NSError **)error;
NSManagedObjectModel xcdatamodelld模型文件
+ (NSManagedObjectModel *)mergedModelFromBundles:(NSArray *)bundles;
NSManagedObject 实例类
setvalue:forkey valueForKey:
NSManagedObjectContext 正在被管理的数据(上下文)
//初始化一个persistentStoreCoordinator
NSPersistentStoreCoordinator *coordinatorStore = [[NSPersistentStoreCoordinator alloc]initWithManagedObjectModel:[NSManagedObjectModel mergedModelFromBundles:nil]];
//为persistentstorecoordinator添加数据库文件
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *sqlitePath = [path stringByAppendingPathComponent:@"people.sqlite"];
NSError *error = nil;
NSPersistentStore *store = [coordinatorStore addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:[NSURL fileURLWithPath:sqlitePath] options:nil error:&error];
if (store == nil) {
NSLog(@"11111111111%@",error);
}
//alloc一个上下文并设置其persistentstorecoordinator
_context = [[NSManagedObjectContext alloc]init];
_context.persistentStoreCoordinator = coordinatorStore;
二、使用coreData的一般步骤:
1、new一个coredata文件,添加实例
2、创建每个实例的实例类
3、配置上下文presistentstorecoordinator
4、进行增、查、删操作
三、增、查、删操作
1、增
//描述一个实例对象,并插入
People *peopleA = [NSEntityDescription insertNewObjectForEntityForName:@"People" inManagedObjectContext:_context];
peopleA.name = @"zhangshan";
peopleA.age = [NSNumber numberWithInt:17];
NSError *error = nil;
//保存上下文
BOOL save = [_context save:&error];
if (!save) {
NSLog(@"======%@",error);
}
2、查、删
删除操作需要先查询
//创建获取一个查询请求
NSFetchRequest *requst = [NSFetchRequest fetchRequestWithEntityName:@"People"];
//配置请求,可以使用谓词
//requst.predicate =
NSArray *sort = [_context executeFetchRequest:requst error:nil];
//遍历结果进行删除操作
for (NSManagedObject *obj in sort) {
[_context deleteObject:obj];
}
//保存上下文
[_context save:nil];
四、coreData中常用类
NSFetchRequest 查询请求
fetchRequestWithEntityName:
NSEntityDescription实例的描述
+ (id)insertNewObjectForEntityForName:(NSString *)entityName inManagedObjectContext:(NSManagedObjectContext *)context;