苹果开发 笔记(17)

来源:互联网 发布:永暑礁 知乎 编辑:程序博客网 时间:2024/04/29 09:05

昨天看了一个关于coreData视频,用了一下coreData的里面API,大概深入的地方还没有,只是简单的涉及到一些操作。视频讲述到是如何将oc的对象转换数据保存到数据库当中。同理也反过来 还原里面的对象。coreData 提供了一种对象存储和读取的技术。 用它可以保存我们的数据,程序关闭后,再打开数据还依旧存在。这种持久化的存储解决方案,非常有用。(据说网易新闻客户端也采用有这个方法去处理一些数据)
查看 coreData的pdf
第一次在创建项目 ,勾选 coreData 的选项会生成一些coredata 的相关的API 类。这些类会记录在代理那里。从代理那里找到获取到
NSManagedObjectContext 的上下文。想起这个上下文,包括绘图也有类似。先获取到对应的类,下面就可以做出相应的事情。例如一个是创建的动作,一个获取的动作,一个执行的动作的请求,执行动作

NSEntityDescription(描述实体)
NSManagedObject(实体对象,类似NSDictionary)
NSFetchRequest(请求相关 查询到数据)

    -(void) addData:(NSString *) msg{    //1.拿到代理    AppDelegate *appDelegate = (AppDelegate*) [UIApplication sharedApplication].delegate;    //2.获取管理对象上下文    NSManagedObjectContext *objContext =  appDelegate.managedObjectContext;    //3建立一个表    NSEntityDescription *entity =[NSEntityDescription entityForName:@"Book" inManagedObjectContext:objContext];    NSManagedObject *book =[[NSManagedObject alloc]initWithEntity:entity insertIntoManagedObjectContext:objContext];    //4保存值    [book setValue:msg forKey:@"name"];    NSError *error;    BOOL isOk = [objContext save:&error];    if (!isOk)    {        NSLog(@"保存失败");    }    [self.persons addObject:book];    [self.tableView reloadData];}
-(void) getData{    //1.拿到代理    AppDelegate *appDelegate = (AppDelegate*) [UIApplication sharedApplication].delegate;    //2.获取管理对象上下文    NSManagedObjectContext *objContext =  appDelegate.managedObjectContext;    NSFetchRequest *request = [[NSFetchRequest alloc]initWithEntityName:@"Book"];    NSError *error;    NSArray *result = [objContext executeFetchRequest:request error:&error];//执行请求    if (result)    {        NSLog(@"读取数据内容%@",result);        self.persons = [result mutableCopy];        [self.tableView reloadData];    }    else    {        self.persons = [[NSMutableArray alloc]init];    }}
0 0