iOSCoreData数据库:

原创 2015年11月18日 18:02:05
@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;//操作管理器(增删改查)
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;//被管理的数据模型
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;//持久化协助管理器

  /**
     * 表示要向Person这个表里面插入一条数据
     */
    /*
     参数1:插入的表名
     参数2:托管上下文对象(coreData操作管理器)

     */
    //数据  ->(映射) 对象
    Person *per = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:self.managedObjectContext];
    //设置返回实体对象的属性
    per.name = @"老王";
    per.age = [NSNumber numberWithInt:11];
    per.headImage = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"1" ofType:@"png"]];

    //保存记录
    [self.managedObjectContext save:nil];

    NSLog(@"%@",NSHomeDirectory());


    //查找数据
    NSFetchRequest *request = [[NSFetchRequest alloc] init];

    //获得表结构实体(把一张表进行实体化)
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:self.managedObjectContext];

    //设置查询的表结构实体(设置查询的是哪张表)
    request.entity = entity;



    /*
    //设置条件查询(谓语)
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name = %@",@"老李"];

    request.predicate = predicate;
     */

    //设置升降序排列
    //YES代表升序,NO代表降序
    NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:YES];

    request.sortDescriptors = @[sort];

    //通过操作管理器发起查询请求
    //resultArr储存搜寻的结果
    NSArray *resultArr = [self.managedObjectContext executeFetchRequest:request error:nil];

    for (Person *per in resultArr) {

        NSLog(@"per.name = %@ per.age = %@",per.name,per.age);

    }


    /*
    for (Person *per in resultArr) {

        NSLog(@"per.name = %@ per.age = %@",per.name,per.age);
        //修改数据(更新)
        per.name = @"老李";

        //保存记录
        [self.managedObjectContext save:nil];

        //删除
        if ([per.age integerValue] == 90) {

            [self.managedObjectContext deleteObject:per];

            //保存记录
            [self.managedObjectContext save:nil];

        }

    }
     */

.M中:
    NSManagedObjectContext *_context;
引入头文件#import "AppDelegate.h"
- (void)loadDataFromCoreData
{
    //coreData查询

    AppDelegate *delegate = [UIApplication sharedApplication].delegate;

    _context = delegate.managedObjectContext;

    NSFetchRequest *request = [[NSFetchRequest alloc]init];

    //从哪个实体中查询数据
    NSEntityDescription *descrip = [NSEntityDescription entityForName:@"CDGoodsModel" inManagedObjectContext:_context];
    //查询规则,where xx = xx
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"cid = %d",_cid];
    [request setEntity:descrip];
    [request setPredicate:predicate];

    NSArray *array = [_context executeFetchRequest:request error:nil];
    [_dataArray addObjectsFromArray:array];
    [_myTable reloadData];
}

数据库删除:
AppDelegate *delegate = [UIApplication sharedApplication].delegate;
        _context = delegate.managedObjectContext;

        for (NSManagedObject *obj in _dataArray)
        {
            [_context deleteObject:obj];
        }
        [_context save:nil];

        [_dataArray removeAllObjects];


数据库插入:CDGoodsModel:表名
   CDGoodsModel *cdModel = [NSEntityDescription insertNewObjectForEntityForName:@"CDGoodsModel" inManagedObjectContext:_context];
            cdModel.imgURL = [NSString stringWithFormat:@"%@",model.imgURL];
            cdModel.price = [NSString stringWithFormat:@"%@",model.price];
            cdModel.discount = [NSString stringWithFormat:@"%@",model.discount];
            cdModel.cid = [NSString stringWithFormat:@"%d",_cid];

            NSError *error = nil;
            if(![_context save:&error])
            {
                NSLog(@"coreData保存数据失败,error=%@",error);
            }else
            {
                [_dataArray addObject:cdModel];
            }

        }

        //刷表
        [_myTable reloadData];

URL 的赋值不可以放到init里

缓存之CoreData

谈到数据储存,首先要明确区分两个概念,数据结构和储存方式。所谓数据结构就是数据存在的形式。除了基本的NSDictionary、NSArray和NSSet这些对象,还有更复杂的如:关系模型、对象图和属性...
  • u014773226
  • u014773226
  • 2016年04月14日 18:08
  • 374

iOS数据库离线缓存思路和网络层封装——数据缓存机制Model封装

.h文件 #import #import /// 缓存策略 typedef NS_ENUM(NSInteger, NetworkCacheType) {     /// 无视...
  • potato512
  • potato512
  • 2016年04月16日 00:03
  • 1200

iOS CoreData数据迁移-迁移管理器迁移数据

我们在开发或者产品升级的时候经常会遇到托管模型的结构化修改(也就是表的结构改变),那么我们就需要数据迁移到新的模型中。 轻量级迁移方式 默认的迁移方式 迁移管理器迁移方式 现在记录一下最后一种迁移方...
  • u010123208
  • u010123208
  • 2016年03月04日 14:23
  • 637

iOS CoreData详解(七)性能相关

原创blog,转载请注明出处 blog.csdn.net/hello_hwc 欢迎关注我的iOS SDK详解专栏,这里有很多基础的文章 http://blog.csdn.net/column/d...
  • Hello_Hwc
  • Hello_Hwc
  • 2015年06月07日 16:11
  • 2785

iOS CoreData之单表操作(增删改查)

CoreData框架, 具有一种对象关系映射机制, 即能够将OC对象转化为数据保存在SQLite(数据库)中, 同时也能够将SQLite中的数据还原为OC对象, 而在此相互转化过程中, 我们无需写繁琐...
  • Macro_13
  • Macro_13
  • 2015年11月02日 23:34
  • 1305

ios修改了coredata数据结构后,更新安装会闪退

iOS App升级安装 - CoreData数据库升级 如果IOS App 使用到CoreData,并且在上一个版本上有数据库更新(新增表、字段等操作),那在覆盖安装程序时就要进行CoreDa...
  • wanglj7525
  • wanglj7525
  • 2015年02月03日 15:29
  • 4938

[数据库]数据库

1.数据库简介1.1)DB和DBMS数据库Database简称DB,是按照数据结构来组织、存储和管理数据的仓库 数据库管理系统Database Management System简称DBMS:管理数据...
  • guwuyue
  • guwuyue
  • 2016年08月14日 21:43
  • 520

简单的 数据库 and or 逻辑

一个很简单的问题,但却老是犯错,记录下来,以供以后遇到相同问题,作下参考 数据库中查询数据的时候,经常会用到 and or 进行条件的编写,如果条件比较长,用到了比较多的and 和or,就需...
  • NBA_2011
  • NBA_2011
  • 2012年07月02日 12:33
  • 2917

几种主流数据库类型简介

1.IBM的DB2    DB2是IBM出口的一系列关系型数据库管理系统,分别在不同的操作系统平台上服务。虽然DB2产品是基于UNIX的系统和个人计算机操作系统,在基于UNIX系统和微软在windo...
  • shufac
  • shufac
  • 2014年04月14日 21:58
  • 17250

数据库技术的发展简史

学习大数据,需要知道“传统”的数据管理技术,了解了数据库管理技术的发展简史,你就知道哪些技术在大数据时代任然有用,以及新技术到底新在哪里~ 数据库系统的研究和开发从20世纪60年代中...
  • willtongji
  • willtongji
  • 2016年10月20日 16:53
  • 6527
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOSCoreData数据库:
举报原因:
原因补充:

(最多只允许输入30个字)