CoreData
2015-10-30 11:54
302 查看
CoreData对于开发者来说是比较方便的,但是它的效率很低,比起sqlite没有它的执行效率高.苹果也在推CoreData但是现在用的还不是太多,
但是对于程序员来说,CoreData是比较简单方便的.
下面我们一起来学习一下CoreData:
首先我们要创建工程的时候勾选创建CoreData选项
然后新建一个继承与NSObject的类CoreDataManager引入头文件
#import <CoreData/CoreData.h>
将AppDelegate里关于CoreData的代码剪切到CoreDataManager类中
创建一个单例方法来获取对象
+ (CoreDataManager *)shareCoreDataManager;
//单例方法
+ (CoreDataManager *)shareCoreDataManager{
static CoreDataManager *manager = nil;
//保证线程安全,该方法只走一次
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
manager = [[CoreDataManager alloc] init];
});
return manager;
}
目前为止我们的准备工作已将做好了
然后在工程名.xcdatamodeld的文件下条件你想要存储数据的属性
添加
-(void)add:(id)sender{
Image *image = [NSEntityDescription insertNewObjectForEntityForName:@"Image" inManagedObjectContext:self.manager.managedObjectContext];
image.imageName = @"0.jpg";
image.imageData = self.imageData;
image.imageDesc = @"不错呦";
[self.manager saveContext];
}
//搜索fec是关键字
-(void)selectAll{
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Image" inManagedObjectContext:self.manager.managedObjectContext];
[fetchRequest setEntity:entity];
// Specify criteria for filtering which objects to fetch
// NSPredicate *predicate = [NSPredicate predicateWithFormat:@"<#format string#>", <#arguments#>];
// [fetchRequest setPredicate:predicate];
// // Specify how the fetched objects should be sorted
// NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"<#key#>"
// ascending:YES];
// [fetchRequest setSortDescriptors:[NSArray arrayWithObjects:sortDescriptor, nil]];
NSError *error = nil;
NSArray *fetchedObjects = [self.manager.managedObjectContext executeFetchRequest:fetchRequest error:&error];
if (fetchedObjects == nil) {
NSLog(@"%@",error);
}
NSLog(@"%@",fetchedObjects);
[self.array setArray:fetchedObjects];
[self.tableView reloadData];
在创建完之后还要在editor里面选择创建对应的NSManagedObject然后引入.h头文件
版本的迭代
在editor里选择add Model Verson 即可,然后更改当前选中Model即可
数据的迁移
需要在CoreDataManage的- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
函数中加入
// 填写配置信息 1是否允许升级 2桥接
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES],NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES],NSInferMappingModelAutomaticallyOption, nil];
新建文件选择mapping Model即可
但是对于程序员来说,CoreData是比较简单方便的.
下面我们一起来学习一下CoreData:
首先我们要创建工程的时候勾选创建CoreData选项
然后新建一个继承与NSObject的类CoreDataManager引入头文件
#import <CoreData/CoreData.h>
将AppDelegate里关于CoreData的代码剪切到CoreDataManager类中
创建一个单例方法来获取对象
+ (CoreDataManager *)shareCoreDataManager;
//单例方法
+ (CoreDataManager *)shareCoreDataManager{
static CoreDataManager *manager = nil;
//保证线程安全,该方法只走一次
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
manager = [[CoreDataManager alloc] init];
});
return manager;
}
目前为止我们的准备工作已将做好了
然后在工程名.xcdatamodeld的文件下条件你想要存储数据的属性
添加
-(void)add:(id)sender{
Image *image = [NSEntityDescription insertNewObjectForEntityForName:@"Image" inManagedObjectContext:self.manager.managedObjectContext];
image.imageName = @"0.jpg";
image.imageData = self.imageData;
image.imageDesc = @"不错呦";
[self.manager saveContext];
}
//搜索fec是关键字
-(void)selectAll{
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Image" inManagedObjectContext:self.manager.managedObjectContext];
[fetchRequest setEntity:entity];
// Specify criteria for filtering which objects to fetch
// NSPredicate *predicate = [NSPredicate predicateWithFormat:@"<#format string#>", <#arguments#>];
// [fetchRequest setPredicate:predicate];
// // Specify how the fetched objects should be sorted
// NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"<#key#>"
// ascending:YES];
// [fetchRequest setSortDescriptors:[NSArray arrayWithObjects:sortDescriptor, nil]];
NSError *error = nil;
NSArray *fetchedObjects = [self.manager.managedObjectContext executeFetchRequest:fetchRequest error:&error];
if (fetchedObjects == nil) {
NSLog(@"%@",error);
}
NSLog(@"%@",fetchedObjects);
[self.array setArray:fetchedObjects];
[self.tableView reloadData];
在创建完之后还要在editor里面选择创建对应的NSManagedObject然后引入.h头文件
版本的迭代
在editor里选择add Model Verson 即可,然后更改当前选中Model即可
数据的迁移
需要在CoreDataManage的- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
函数中加入
// 填写配置信息 1是否允许升级 2桥接
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES],NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES],NSInferMappingModelAutomaticallyOption, nil];
新建文件选择mapping Model即可
相关文章推荐
- jQuery-easyUI的使用:combobox实现联动选择及自动搜索
- JSP页面数据展示:分组数据展示
- android怎么实现自动接听
- Swift完整教程系列
- android GridLayout 设置item间距方式
- AVILib Android AVI录像文件封装
- POJ1469 COURSES
- 深入研究java.lang.Runtime类
- bones脚本篇 - 实现一个简单的列表
- [Servlet]请求调派、请求范围属性、Model 2设计思想简述
- Android进阶——Volley+Https给你的安卓应用加上SSL证书
- jQuery 仿1688地域选择
- 常见对话框之一AlertDialog
- jQuery-easyUI的使用:combo实现图片下拉选择器
- iOS应用的国际化
- 自定义listview和ProgressBar的简单使用
- AutoLayout 入门
- 10-29APP迭代、小结
- JS(JQ)分页 个人查看,没注释
- 递归 求组合