您的位置:首页 > 其它

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即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: