zoukankan      html  css  js  c++  java
  • CoreData

    参考了前辈的作品:http://blog.csdn.net/kesalin/article/details/6739319

     

    1.ManagedObjectModel  :

    描述应用程序的数据模型 包含了实体(Entity) 属性(Property) 读取数据的等

    1 //xcdataModeld文件编译后为momd文件 从资源文件中加载NSManagedObjectModel对象
    2     NSURL *url = [[NSBundle mainBundle] URLForResource:@"Model" withExtension:@"momd"];
    3     _model = [[NSManagedObjectModel alloc] initWithContentsOfURL:url];

     

    2.ManagedObjectContext:

    ManagedObjectContext 参与对数据操作的全过程 并检测数据对象的变化  下面的代码可看出到处都有 他的影子

        //通过NSManagedObjectModel对象创建NSPersistentStoreCoordinator对象
        _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:_model];
    ////数据库的增删改查
    //插入
    - (void)insertWithName:(NSString *)name
    {
        People *people = [NSEntityDescription insertNewObjectForEntityForName:ENTITY_NAME inManagedObjectContext:_context];
        people.name = name;
        //baocunxiugai
        NSError *error = nil;
        if (![_context save:&error])
        {
            NSLog(@"插入数据失败");
        }
    }
    //检索所有
    - (NSArray *)searchAll
    {
        NSFetchRequest *req = [NSFetchRequest fetchRequestWithEntityName:ENTITY_NAME];
        NSArray *resultArr = [_context executeFetchRequest:req error:nil];
        return resultArr;
        
    }
    //更新对象
    - (void)updateWithPeople:(People *)people
    {
        NSError *error = nil;
        if (![_context save:&error])
        {
            NSLog(@"Update fail");
        }
    }
    //删除数据
    - (void)deletePeople:(People *)people
    {
        [_context deleteObject:people];
        
        NSError *error = nil;
        if (![_context save:&error])
        {
            NSLog(@"Delete fail");
        }
    }

    3.PersistentStoreCoordinator:

    PersistentStoreCoordinator相当于数据文件管理器 处理底层对数据文件的读取与写入  

     //文件夹路径
        NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"Model.sqlite"];
        //加载文件
        if ([_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:[NSURL fileURLWithPath:path] options:nil error:nil])
        {
            _context = [[NSManagedObjectContext alloc] init];
            //为NSManagedObjectContext对象设置存储协调者
            [_context setPersistentStoreCoordinator:_persistentStoreCoordinator];
        }
        else
        {//加载出错 就崩溃
            abort();
        }

    4.ManagedObject

    数据对象 与ManagedObjectContext相关联

     

  • 相关阅读:
    js 99乘法表
    微信小程序 富文本插件 循环渲染方式
    Mysql: mysqlbinlog命令查看日志文件
    Java Mail 发送邮件(SSL加密方式,TSL加密方式)
    进程和线程的区别
    Java 制作证书(Windows 和Linux)
    Linux 常用命令标记
    Java clone克隆方法 --深拷贝--浅拷贝 --原型模型
    tomcat内存溢出:PermGen space解决方法
    Java 多线程 ---- 线程中this与 Thread.currentThread()线程的区别
  • 原文地址:https://www.cnblogs.com/dlwj/p/4960695.html
Copyright © 2011-2022 走看看