CoreData的简单使用<一、CoreData数据库表的建立以及增删改查操作>
2016-08-31 13:57
726 查看
一:CoreData和FMDatabase的比较
CoreData和FMDatabase是两个iOS移动端开发很常用的数据持久化存储的技术,那究竟什么时候使用CoreData什么时候使用FMDatabase呢?其实两者各有自己的优势,如果使用CoreData就直接面向对象,不用写sql语句,开发效率会提高。但是如果数据结构比较复杂,表与表需要进行关联比较的时候建议使用FMDatabase。而且FMDatabase的代码执行速率比CoreData要高。二:下面是一个简单的公司员工表使用CoreData操作的代码
// // ViewController.m // CoreData // // Created by YanFengZheng on 16/8/27. // Copyright © 2016年 fe. All rights reserved. // #import "ViewController.h" #import <CoreData/CoreData.h> #import "Employee.h" @interface ViewController () @property (nonatomic,strong) NSManagedObjectContext *context; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; //1.创建模型文件[相当于数据库里的表] //2.添加实体 [一张表] //3.创建实体类 [相当于模型] //4.生成上下文 关联模型文件生成数据库 //4.1上下文 NSManagedObjectContext *context = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType]; //4.2持久化存储协调器 NSManagedObjectModel *model = [NSManagedObjectModel mergedModelFromBundles:nil]; NSPersistentStoreCoordinator *store = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model]; //4.3设置数据库路径 NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; NSString *sqlitePath = [doc stringByAppendingPathComponent:@"company.sqlite"]; NSLog(@"%@",sqlitePath); [store addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:[NSURL fileURLWithPath:sqlitePath] options:nil error:nil]; context.persistentStoreCoordinator = store; self.context = context; /*在写以上代码的时候,先初始化上下文,再初始化上下文需要的持久化存储协调器,再初始化持久化存储协调器所需要的模型文件,最后添加持久化类型和文件路径。个人感觉按照这个方法比较容易记忆。 */ } #pragma mark - 数据库操作 增、删、改、查 //1.插入数据 - (IBAction)insertData:(UIButton *)sender { //插入数据的时候,需要使用实体描述拿到实体模型 Employee *employee = [NSEntityDescription insertNewObjectForEntityForName:@"Employee" inManagedObjectContext:self.context]; employee.name = @"王五"; employee.height = @190; employee.birthday = [NSDate date]; [self.context save:nil]; } - (IBAction)deleteData:(UIButton *)sender { //1:先查询到需要删除的数据(比如这里以删除员工张三的数据为例) //1.1:FectchRequest 抓取请求对象 NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Employee"]; //1.2:设置过滤条件 NSPredicate *pre = [NSPredicate predicateWithFormat:@"name = %@",@"张三"]; request.predicate = pre; //1.3执行查询请求 NSArray *emps = [self.context executeFetchRequest:request error:nil]; //2:执行删除操作 for (Employee *emp in emps) { [self.context deleteObject:emp]; } //3:保存 [self.context save:nil]; } //更新数据 - (IBAction)upDateData:(UIButton *)sender { //1:先查询出需要更新的数据 //1.1:FectchRequest 抓取请求对象 NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Employee"]; //1.2:设置过滤条件 NSPredicate *pre = [NSPredicate predicateWithFormat:@"name = %@",@"张三"]; request.predicate = pre; //1.3执行查询请求 NSArray *emps = [self.context executeFetchRequest:request error:nil]; //2:更新数据 for (Employee *emp in emps) { emp.height = @3; } //3:保存 [self.context save:nil]; } //查询员工 - (IBAction)queryData:(UIButton *)sender { //1:FectchRequest 抓取请求对象 NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Employee"]; //2:设置过滤条件 NSPredicate *pre = [NSPredicate predicateWithFormat:@"name = %@",@"张三"]; request.predicate = pre; //3:设置排序 NSSortDescriptor *height = [NSSortDescriptor sortDescriptorWithKey:@"height" ascending:YES]; request.sortDescriptors = @[height]; //4:执行请求 NSArray *emps = [self.context executeFetchRequest:request error:nil]; //遍历查询结果 for (Employee *emp in emps) { NSLog(@"名字:%@,身高:%@,生日:%@",emp.name,emp.height,emp.birthday); } } @end
相关文章推荐
- JAVAWEB开发之mybatis详解(一)——mybatis的入门(实现增删改查操作)、自定义别名、抽取代码块以及动态SQL的使用
- JAVAWEB开发之mybatis详解(一)——mybatis的入门(实现增删改查操作)、自定义别名、抽取代码块以及动态SQL的使用
- python3.6 使用 pymysql 连接 Mysql 数据库及 简单的增删改查操作
- CoreData的简单使用<二、CoreData两张数据库表的关联操作>
- php操作mysql数据库的连接语句以及最简单的增删改查语句
- salesforce 零基础学习(五十一)使用 Salesforce.com SOAP API 实现用户登录以及简单的增删改查(JAVA访问salesforce)
- Hibernate中JPA的简单使用,实现简单的对表的增删改查操作
- Hibernate工具类获取Session对象、以及简单的增删改查操作
- Android开发(10)使用SQLiteDatabase操作SQLite数据库实现增删改查(源码)
- loner_li Oracle数据库的增删改查(简单操作)
- C#连接oracle数据库执行简单的增删改查操作
- 使用非类型化的DataSet完成用户信息的增删改查操作
- android使用xfire webservice框架远程对sqlserver操作(包括增删改查)的实例!!已在真机上试验通过
- Android开发(10)使用SQLiteDatabase操作SQLite数据库实现增删改查(源码)
- 简单的三层框架以及使用dbutils进行数据库操作(入门)
- 简单的三层框架以及使用dbutils进行数据库操作(入门)
- PHP程序中使用PDO对象实现对数据库的增删改查操作的示例代码
- 使用存储过程操作数据库(实现增删改查)
- 利用hashtable模拟实现权限验证(同map思想-->只能有一个用户名,可重复密码)以及增删查改操作
- <<Think in Java 4 >>中关于使用XOM操作xml文件