创建模型
1 创建.xcdatamodeld文件
2 添加entity, 并设置属性
3 create NSManagedObject Subclass ,如图
获取coredata 操作上下文环境
+ (NSManagedObjectContext *)coredatagetContext {
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"Model" withExtension:@"momd"];
//根据模型文件创建模型对象
NSManagedObjectModel *model = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
//2、创建持久化存储助理:数据库
//利用模型对象创建助理对象
NSPersistentStoreCoordinator *store = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];
//数据库的名称和路径
NSString *docStr = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *sqlPath = [docStr stringByAppendingPathComponent:@"coreData.sqlite"];
NSLog(@"数据库 path = %@", sqlPath);
NSURL *sqlUrl = [NSURL fileURLWithPath:sqlPath];
NSError *error = nil;
//设置数据库相关信息 添加一个持久化存储库并设置存储类型和路径,NSSQLiteStoreType:SQLite作为存储库
[store addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:sqlUrl options:@{
NSMigratePersistentStoresAutomaticallyOption:@YES,NSInferMappingModelAutomaticallyOption:@YES} error:&error];
if (error) {
NSLog(@"添加数据库失败:%@",error);
} else {
NSLog(@"添加数据库成功");
}
//3、创建上下文 保存信息 操作数据库
NSManagedObjectContext *context = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
//关联持久化助理
context.persistentStoreCoordinator = store;
return context;
// _context = context;
}
基本操作
写入
+ (void)coreUpdateWithName:(NSString *)name gender:(NSString *)gender
{
NSManagedObjectContext *context = [self coredatagetContext];
NSArray *array = [self coreDatagetStudent];
BOOL add = YES;
for (Student *person in array) {
if ([person.name isEqualToString:NAME]) {
add = NO;
break;
}
}
if (add == NO) {
return;
}
Student *student = [NSEntityDescription
insertNewObjectForEntityForName:@"Student"
inManagedObjectContext:context];
student.name = name;
student.gender = gender;
// 3.保存插入的数据
NSError *error = nil;
if ([context save:&error]) {
NSLog(@"掺入成年公插入成功弄");
NSArray * array = [MyTool coreDatagetStudent];
NSLog(@"插入后拆入喉%@",array);
}else{
NSLog(@"插入失败插入失败");
}
}
查询
+ (NSArray *)coreDatagetStudent
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Student"];
NSManagedObjectContext *context = [self coredatagetContext];
NSArray *resArray = [context executeFetchRequest:request error:nil];
return resArray;
}
修改
NSManagedObjectContext *context = [self coredatagetContext];
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Student"];
NSPredicate *pre = [NSPredicate predicateWithFormat:@"name = %@", name];
request.predicate = pre;
//发送请求
NSArray *resArray = [context executeFetchRequest:request error:nil];
//修改
for (Student *stu in resArray) {
stu.account = account;
}
//保存
NSError *error = nil;
if ([context save:&error]) {
NSLog(@"更改成功饿");
// [self alertViewWithMessage:@"更新所有帅哥的的名字为“且行且珍惜_iOS”"];
}else{
// NSLog(@"更新数据失败, %@", error);
}