1.创建模型文件和实体类
1>添加模型文件:
2>添加实体类:
3>添加实体和基本介绍:
2.初始化CoreData:
- (void)setUpCoreData {
//加载模型文件,一个模型文件相当于存储表的容器,模型文件中有实体,相当于有表,总之相当于加载表
NSManagedObjectModel *model = [NSManagedObjectModel mergedModelFromBundles:nil];
//添加持久化存储库,负责将模型文件中的表持久化到数据库中
NSPersistentStoreCoordinator *store = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];
//生成数据库位置
NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"person.sql"];
//生成本地数据库,并将模型文件中的表创出来
[store addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:[NSURL fileURLWithPath:path] options:nil error:nil];
//生成上下文
NSManagedObjectContext *context = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
//将上下文关联到持久化存储库
context.persistentStoreCoordinator = store;
_context = context;
}
3.insert:
-(void)addPerson{
//用实体描述类生成一个实体对象,就是在Person表中生成一个记录
Person *person = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:_context];
person.name = @"hehe";
[_context save:nil];
NSLog(@"%@",NSHomeDirectory());
}
4.read:
-(void)readPerson{
//查询的时候需要对某个实体进行请求
NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Person"];
//可以设置过滤条件
NSPredicate *pre = [NSPredicate predicateWithFormat:@"name = %@",@"hehe"];
request.predicate = pre;
//当有多笔数据的时候可以设置排序,对某个属性进行排序,ascending控制升序还是降序,YES是降序
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:YES];
//接收的是一个sort数组
request.sortDescriptors = @[sort];
NSArray *persons = [_context executeFetchRequest:request error:nil];
for (Person *p in persons) {
NSLog(@"%@",p.name);
}
}
5.update:
-(void)updatePerson{
//要执行update,要先查询数据,然后对数据进行更改,再save即可
NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Person"];
NSArray *persons = [_context executeFetchRequest:request error:nil];
for (Person *p in persons) {
//这样直接更改对象,然后再save即可
p.name = @"hahaha";
}
[_context save:nil];
}
6.delete:
-(void)deletePerson{
//要执行update,要先查询数据,然后对数据进行delete
NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Person"];
NSArray *persons = [_context executeFetchRequest:request error:nil];
for (Person *p in persons) {
//这样直接删除,然后再save即可
[_context delete:p];
}
[_context save:nil];
}