zoukankan      html  css  js  c++  java
  • IOS-core data

    三个主要的类

    1:NSManagedObjectModel(上下文,数据 关系)

    2:NSPersistentStoreCoordinator(持久性数据协调器,和sqlite打交道的 与1建立关系,通过3执行数据交互)

    3:NSManagedObjectContext(管理对象上下文)

    分页查询:

     分页起始索引

      request.fetchoffset = 0;

     分页条数

      request.fetchLimit = 6;

    自己写的一个代码:

    1.声明:  

        NSManagedObjectModel *model;

        NSPersistentStoreCoordinator *store;

      NSManagedObjectContext *_context;

    2.初始化管理上下文:

      _context = [[NSManagedObjectContext allocinit];

    3.初始化上下文模型

      NSURL *modelURL = [[NSBundle mainBundleURLForResource:@"Model"   withExtension:@"momd"];

         model = [[NSManagedObjectModel allocinitWithContentsOfURL:modelURL];

    4.实例化存储桥梁,需要模型

        store = [[NSPersistentStoreCoordinator alloc]initWithManagedObjectModel:model];

    5.添加一个持久化的数据库

        NSArray *docs = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectoryNSUserDomainMaskYES);

        NSString *path = [docs[0stringByAppendingPathComponent:@"my.db"];

        NSURL *url = [NSURL fileURLWithPath:path];

        NSLog(@"%@",url);

        NSError *error = nil;

        [store addPersistentStoreWithTypeNSSQLiteStoreType configuration:nil URL:url options:nil error:&error];

        if(error)

        {

            NSLog(@"打开数据库出错:%@",error);

        }

        else

        {

            _context.persistentStoreCoordinator = store;

            NSLog(@"打开数据库成功");

        }

    此时数据库创建成功

    6.添加纪录

    People *p = [NSEntityDescription insertNewObjectForEntityForName:@"People" inManagedObjectContext:_context];

    p.name = self.name.text;

    Sorce *s = [NSEntityDescription insertNewObjectForEntityForName:@"Sorce" inManagedObjectContext:_context];

    p.sorce.easysorce = easytime;

    保存添加

    [_context save:nil];

    7.查询数据库

    //实例化一个查询

        NSFetchRequest *request= [NSFetchRequest fetchRequestWithEntityName:@"People"];

        //congtext执行查询

        NSString *textfiled = self.name.text;

        request.predicate = [NSPredicate predicateWithFormat:@"name LIKE %@",textfiled];

        NSArray *array = [_context executeFetchRequest:request error:nil];

        for (People *p in array) {

            NSString *agetextfiled = [p.age stringValue];

            [self.age setText:agetextfiled];

        }

        

        if([self.age.text  isEqual@""])

        {

            NSString *text = @"查无此人";

            UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"提示" message:text delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nilnil];

            [alert show];

        }

    8.删除一条数据

    // 1. 实例化查询请求

        NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"People"];

        

        // 2. 设置谓词条件

        NSString *textfiled = self.name.text;

        request.predicate = [NSPredicate predicateWithFormat:@"name LIKE %@",textfiled];

        

        // 3. 由上下文查询数据

        NSArray *result = [_context executeFetchRequest:request error:nil];

        

        // 4. 输出结果

        for (People *person in result) {

            // 删除一条记录

            [_context deleteObject:person];

            break;

        }

        

        // 5. 通知_context保存数据

        if ([_context save:nil]) {

            NSLog(@"删除成功");

            [self.age setText:@""];

            [self.name setText:@""];

        } else {

            NSLog(@"删除失败");

        }

    详细的可以参考:http://blog.csdn.net/ysy441088327/article/details/8606019

  • 相关阅读:
    成为Java GC专家系列(3) — 如何优化Java垃圾回收机制
    成为JavaGC专家Part II — 如何监控Java垃圾回收机制
    JAVA缓存的实现
    Lock Less Java Object Pool
    跟屌丝大哥学习设计模式--享元模式
    数据库 -- 由数据库连接池引出的三种设计模式
    优秀博客推荐:各种数据结构与算法知识入门经典
    学习总结
    洛谷P3360偷天换日(树形DP)
    疯子的算法总结14--ST算法(区间最值)
  • 原文地址:https://www.cnblogs.com/zhouwenbo/p/4447735.html
Copyright © 2011-2022 走看看