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];
   }

 

posted on 2015-10-06 17:22  popper小P  阅读(222)  评论(0编辑  收藏  举报