• iOS -数据持久化之CoreData


     Core Data是iOS5之后才出现的一个框架,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中,也能够将保存在数据库中的数据还原成OC对象。在此数据操作期间,我们不需要编写任何SQL语句

    1.创建项目的时候勾选Use the CoreData

    2.创建好之后就会在左边的文件名那里看到一个CoreData.xcdatamodeldde文件

    3.点击之后在Xcode的中间可以看到它的内容,之后点击左下角的Add Entity可以添加表(表名可以修改,但首字母必须大写)

    4.在表里面添加属性

    5.创建表的数据模型

    (1)点击New File

    (2)点击next

    (3)点击next

    (4)要创建哪个表的数据模型就勾选哪一个,然后点击next

     //    读取coreData

        //    1、读取managedObjectModel

        //    2、找到里面所有实体的名字[model entitiesByName]

        //    3、找到要读取的实体NSEntityDescription *entry = entryDic[@"UserInfo"];

        //    4、初始化 查询对象 NSFetchRequest *request = [[NSFetchRequest alloc]init];

        //    5、通过上下文 查找 NSArray *list = [context executeFetchRequest:request error:nil];

     1  NSManagedObjectContext *context = [[AppDelegate appDelegate] managedObjectContext];
     2 
     3     
     4 
     5     //    1、读取managedObjectModel
     6 
     7     NSManagedObjectModel *model = [[AppDelegate appDelegate] managedObjectModel];
     8 
     9     //    2、找到里面所有实体的名字[model entitiesByName]
    10 
    11     NSDictionary *entitiesDic = [model entitiesByName];
    12 
    13     //    3、找到要读取的实体NSEntityDescription *entry = entryDic[@"UserInfo"];
    14 
    15     NSEntityDescription *entity = entitiesDic[@"Userinfo"];
    16 
    17     //    4、初始化 查询请求对象 NSFetchRequest
    18 
    19     NSFetchRequest *request = [[NSFetchRequest alloc]init];
    20 
    21     request.entity = entity;
    22 
    23     //    request.predicate
    24 
    25     //    request.fetchLimit
    26 
    27     //    request.fetchOffset
    28 
    29     
    30 
    31     //    5、通过上下文开始查询
    32 
    33    aList = [context executeFetchRequest:request error:nil];
    34 
    35     NSLog(@"%@",aList);
    36 
    37     
    38 
    39     if (aList.count!=0) {
    40 
    41         [MytableView reloadData];
    42 
    43 //        [MytableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation: UITableViewRowAnimationNone];
    44 
    45     }
    46 
    47  
    48 
    49  

    注:appDelegate这个方法是在AppDelegate文件里面定义的,在.h文件声明

    +(AppDelegate *)appDelegate;

    在.m文件实现

    +(AppDelegate *)appDelegate{
        return (AppDelegate *)[UIApplication sharedApplication].delegate;
    }

    操作coreData

     1、不管增删改查都需要先初始化 上下文[app managedObjectContext]

     2、插入具体内容到上下文

     + (id)insertNewObjectForEntityForName:(NSString *)entityName inManagedObjectContext:(NSManagedObjectContext *)context;

     3、保存 saveContext

    - (void)addEntity{
        
        NSManagedObjectContext * conText = [[AppDelegate appDelegate]managedObjectContext];
       Massage * massage = [NSEntityDescription insertNewObjectForEntityForName:@"Massage" inManagedObjectContext:conText];
        [massage setValue:postView.titleTextFild.text forKey:@"title"];
        [massage setValue:postView.contentTextFild.text forKey:@"content"];
        Userinfo *userinfo = [NSEntityDescription insertNewObjectForEntityForName:@"Userinfo" inManagedObjectContext:conText];
             NSArray * List = @[@"陈3.jpg",@"陈2.jpg",@"是1.jpg",@"是3.jpg"];
        int arc = arc4random()%List.count;
    
        UIImage *img = [UIImage imageNamed:List[arc] ];
        [userinfo setValue:@"hehehe" forKey:@"name"];
        [userinfo setValue:@(11) forKey:@"age"];
        [userinfo setValue:UIImageJPEGRepresentation(img, 1) forKey:@"headImage"];
        [userinfo setValue:massage forKey:@"massage"];
     
        [[AppDelegate appDelegate] saveContext];
       }
  • 相关阅读:
    Java之IO流
    Servlet中Session的用法
    Servlet中Cookie的用法
    HTML的表单元素和input元素
    Servlet第一个实例之用户登录网址
    Servlet的生命周期和三种实现方式
    写一下近期的计划(工作)
    RxJava的基础知识
    actionbar、toolbar、menu之间的关系
    ButterKnife的基础知识
  • 原文地址:https://www.cnblogs.com/popper123/p/4857405.html
Copyright © 2020-2023  润新知