- (void)openDB{
//加载模型数据文件---即在工程中创建的.xcdatamodeld文件,但在实际的路径中,以momd为后缀
NSURL *url = [[NSBundle mainBundle] URLForResource:@"Evaluate" withExtension:@"momd"];
//创建MOM
NSManagedObjectModel *mom = [[NSManagedObjectModel alloc] initWithContentsOfURL:url];
//创建PSC
NSPersistentStoreCoordinator *psc = [[NSPersistentStoreCoordinator alloc]initWithManagedObjectModel:mom];
//为PSC指定操作的数据库
//获取路径
NSString *filePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Evaluate.sqlite"];
NSLog(@"%@",filePath);
//转化为url
NSURL *dbUrl = [NSURL fileURLWithPath:filePath];
NSError *error = nil;
//执行打开数据库操作
[psc addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:dbUrl options:nil error:&error];
if (error) {
NSLog(@"打开数据库失败");
}else{
NSLog(@"打开数据库成功");
}
//创建数据库操作对象
self.context = [[NSManagedObjectContext alloc] init];
self.context.persistentStoreCoordinator = psc;
}
#pragma mark--创建MO对象
- (NSManagedObject *)createMO:(NSString *)entityName{
if (entityName.length == 0) {
return nil;
}
//根据传的实体名创建MO对象--》self.context必须在打开数据库时初始化
NSManagedObject *mo = [NSEntityDescription insertNewObjectForEntityForName:entityName inManagedObjectContext:self.context];
return mo;
}
#pragma mark--1.添加对象
- (void)saveObject:(NSManagedObject *)mo{
[self.context insertObject:mo];
NSError *error = nil;
if ([self.context save:&error]) {
NSLog(@"保存成功");
}else{
NSLog(@"保存%@失败:%@",mo, error);
}
}
#pragma mark--2.删除数据
- (void)delegateObject:(NSManagedObject *)mo{
if (!mo) {
return;
}
[self.context deleteObject:mo];
NSError *error = nil;
if ([self.context save:&error]) {
NSLog(@"删除成功");
}else{
NSLog(@"删除%@失败",mo);
}
}
#pragma mark--3.更改数据
- (void)updateObject:(NSManagedObject *)mo{
if (!mo) {
return;
}
NSError *error = nil;
if ([self.context save:&error]) {
NSLog(@"更改成功");
}else{
NSLog(@"更改%@失败",mo);
}
}
#pragma mark--4.查询数据(同步线程)
- (NSArray *)executeWithEntityName:(NSString *)entityName Predicate:(NSPredicate *)predicate{
if (entityName.length == 0) {
return nil;
}
//创建查询操作对象
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:entityName];
//定义排序字段--按某个字段是否升序
NSSortDescriptor *sortDesc = [NSSortDescriptor sortDescriptorWithKey:@"id" ascending:YES];
request.sortDescriptors = @[sortDesc];
//设置分页查询
// int page = 0;
// [request setFetchLimit:5];//设置每次查询的结果数量
// [request setFetchOffset:page * 5];//设置查询开始的位置
//定义查询条件
request.predicate = predicate;
//执行查询操作
NSArray *resultArr = [self.context executeFetchRequest:request error:nil];
return resultArr;
}
数据库操作工具类
最新推荐文章于 2021-11-10 19:22:48 发布