Core Data是iOS5之后才出现的一个框架,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中,也能够将保存在数据库中的数据还原成OC对象。在此数据操作期间,我们不需要编写任何SQL语句
1.创建项目的时候勾选Use the CoreData
2.创建好之后就会在左边的文件名那里看到一个CoreData.xcdatamodeldde文件
3.点击之后在Xcode的中间可以看到它的内容,之后点击左下角的Add Entity可以添加表(表名可以修改,但首字母必须大写)
4.在表里面添加属性
5.创建表的数据模型
(1)点击New File
(2)点击next
(3)点击next
(4)要创建哪个表的数据模型就勾选哪一个,然后点击next
// 读取coreData
// 1、读取managedObjectModel
// 2、找到里面所有实体的名字[model entitiesByName]
// 3、找到要读取的实体NSEntityDescription *entry = entryDic[@"UserInfo"];
// 4、初始化 查询对象 NSFetchRequest *request = [[NSFetchRequest alloc]init];
// 5、通过上下文 查找 NSArray *list = [context executeFetchRequest:request error:nil];
NSManagedObjectContext *context = [[AppDelegate appDelegate] managedObjectContext]; // 1、读取managedObjectModel NSManagedObjectModel *model = [[AppDelegate appDelegate] managedObjectModel]; // 2、找到里面所有实体的名字[model entitiesByName] NSDictionary *entitiesDic = [model entitiesByName]; // 3、找到要读取的实体NSEntityDescription *entry = entryDic[@"UserInfo"]; NSEntityDescription *entity = entitiesDic[@"Userinfo"]; // 4、初始化 查询请求对象 NSFetchRequest NSFetchRequest *request = [[NSFetchRequest alloc]init]; request.entity = entity; // request.predicate // request.fetchLimit // request.fetchOffset // 5、通过上下文开始查询 aList = [context executeFetchRequest:request error:nil]; NSLog(@"%@",aList); if (aList.count!=) { [MytableView reloadData]; // [MytableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation: UITableViewRowAnimationNone]; }
注:appDelegate这个方法是在AppDelegate文件里面定义的,在.h文件声明
+(AppDelegate *)appDelegate;
在.m文件实现
+(AppDelegate *)appDelegate{
return (AppDelegate *)[UIApplication sharedApplication].delegate;
}
操作coreData
1、不管增删改查都需要先初始化 上下文[app managedObjectContext]
2、插入具体内容到上下文
+ (id)insertNewObjectForEntityForName:(NSString *)entityName inManagedObjectContext:(NSManagedObjectContext *)context;
3、保存 saveContext
- (void)addEntity{ NSManagedObjectContext * conText = [[AppDelegate appDelegate]managedObjectContext];
Massage * massage = [NSEntityDescription insertNewObjectForEntityForName:@"Massage" inManagedObjectContext:conText];
[massage setValue:postView.titleTextFild.text forKey:@"title"];
[massage setValue:postView.contentTextFild.text forKey:@"content"];
Userinfo *userinfo = [NSEntityDescription insertNewObjectForEntityForName:@"Userinfo" inManagedObjectContext:conText];
NSArray * List = @[@"陈3.jpg",@"陈2.jpg",@"是1.jpg",@"是3.jpg"];
int arc = arc4random()%List.count; UIImage *img = [UIImage imageNamed:List[arc] ];
[userinfo setValue:@"hehehe" forKey:@"name"];
[userinfo setValue:@() forKey:@"age"];
[userinfo setValue:UIImageJPEGRepresentation(img, ) forKey:@"headImage"];
[userinfo setValue:massage forKey:@"massage"]; [[AppDelegate appDelegate] saveContext];
}