CoreData的简单使用<四、多个数据库>
2016-09-02 16:17
344 查看
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" #import "Friendster.h" @interface ViewController () @property (nonatomic,strong) NSManagedObjectContext *componyContext; @property (nonatomic,strong) NSManagedObjectContext *weiChartContext; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; self.componyContext = [self getContextWithDateModel:@"Compony.momd"]; self.weiChartContext = [self getContextWithDateModel:@"WeiChart.momd"]; } #pragma mark - 数据库操作 增、删、改、查 //1.插入数据 - (IBAction)insertData:(UIButton *)sender { //插入数据的时候,需要使用实体描述拿到实体模型 Employee *employee = [NSEntityDescription insertNewObjectForEntityForName:@"Employee" inManagedObjectContext:self.componyContext]; employee.name = @"王五"; employee.height = @190; employee.birthday = [NSDate date]; [self.componyContext save:nil]; Friendster *friend = [NSEntityDescription insertNewObjectForEntityForName:@"Friendster" inManagedObjectContext:self.weiChartContext]; friend.text = @"秋天来了,天气凉了"; friend.date = [NSDate date]; [self.weiChartContext 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.componyContext executeFetchRequest:request error:nil]; //遍历查询结果 for (Employee *emp in emps) { NSLog(@"名字:%@,身高:%@,生日:%@",emp.name,emp.height,emp.birthday); } } - (NSManagedObjectContext *)getContextWithDateModel:(NSString *)dataModel { //1.创建模型文件[相当于数据库里的表] //2.添加实体 [一张表] //3.创建实体类 [相当于模型] //4.生成上下文 关联模型文件生成数据库 //4.1上下文 NSManagedObjectContext *context = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType]; //4.2持久化存储协调器 NSURL *componryURL = [[NSBundle mainBundle] URLForResource:dataModel withExtension:nil]; NSManagedObjectModel *model = [[NSManagedObjectModel alloc] initWithContentsOfURL:componryURL]; NSPersistentStoreCoordinator *store = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model]; //4.3设置数据库路径 NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; NSString *sqliteName = [[dataModel componentsSeparatedByString:@"."] firstObject]; NSString *sqlitePath = [doc stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.sqlite",sqliteName]]; NSLog(@"%@",sqlitePath); [store addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:[NSURL fileURLWithPath:sqlitePath] options:nil error:nil]; context.persistentStoreCoordinator = store; return context; /*在写以上代码的时候,先初始化上下文,再初始化上下文需要的持久化存储协调器,再初始化持久化存储协调器所需要的模型文件,最后添加持久化类型和文件路径。个人感觉按照这个方法比较容易记忆。 */ } @end
相关文章推荐
- CoreData的简单使用<二、CoreData两张数据库表的关联操作>
- IOS-CoreData简单使用的主要代码<代码演示>
- CoreData的简单使用<三、CoreData分页查询和模糊查询>
- VC 使用ADO连接数据库的问题!error C2059: 语法错误 : “<L_TYPE_raw>” .
- HTML5新增标签<audio>简单的使用
- 【翻译自mos文章】rac数据库中,HC_<SID>.dat文件被其他Oracle_Home下的实例所使用。
- springMVC+mybatis+spring security<三>:使用数据库管理资源
- map<int,int>函数的简单使用
- 关于delegate的简单使用说明<转载两篇>
- 使用lucene.net2.0 搜索数据库的例子<转自csdn>
- C++ 使用oci访问数据库出现“Column: 2<DOUBLE>, datatype in operator <</>>: CHAR”
- spring3 jsp页面使用<form:form modelAttribute="xxxx" action="xxxx">报错,附连接数据库的spring MVC annotation 案例
- Solr 数据导入 <一>DIH简单使用
- DIOCP开源项目-数据库连接池的使用<多帐套数据库>
- <一>Oracle11g的安装+数据库创建+PL/SQL Dev的使用初步
- C#_delegate - Pair<T> & 简单顺序逆序 & 方法委托(在Pair类下)&枚举类型 混搭使用
- <转载>Android中如何使用命令行查看内嵌数据库SQLite3
- 从数据库读取数据存放在List<T>中,在jsp中将其取出来。(使用JSON)
- 如何使用数据库引擎优化顾问优化数据库 <转>
- Android 数据库ORM框架GreenDao学习心得及使用总结<一>