CoreData

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即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值