【CoreData】 简单地采取

先行介绍一下呀是CoreData —— 它是在iOS5自此出现的一个框架,提供了对象-关系映射(ORM)的成效,既能用OC对象转化成为多少,保存在SQLite数据库文件中,也能用保存在数据库被的数目恢复成OC对象。在这个数据操作中,我们不需要编制任何SQL语句,类似于名牌的Hibernate持久化框架。不过功能自然没有那无坚不摧。

条例:平常我们将数据勾勒及数据库需要写:

insert int Student (name, age) values (xxxx, 12);

苟全运CoreData的讲话则免需要写这个句,忽略了面的语句,远离了SQL语句

Student *Stu = [ [Employee alloc] init];

Stu.name =
@”xxxx”;

Stu.age =
12;

CoreData的采取手续

//
1.创立模型文件 (相当给一个数据库里的发明)

//
New File ———— CoreData ———— Data Model ————
Next图片 1

//
2.添加实体 (相当给一张表)

// 找到我们创建的型文件(xxx.xcdatamodeld,我创建的叫School.xcdatamodeld)————
Add Entity ———— 添加表内属性(这边我加加2单特性(name,
age))

图片 2

// 3.创造实体类

// New File ————
CorData ———— NSManagedobject subclass ———— Next(记得选择要关联的申)这样尽管见面自动生成相应的模子

图片 3

//
4.生改成内外文 关联模型文件生成数据库(关联的当儿,如果当地没有数据库文件,CoreData会协调创建)

// 上下文,记得引用CoreData框架

    NSManagedObjectContext *context
= [[NSManagedObjectContext alloc]init];

// 上下文关联数据库

// model模型文件, 参数:mergedModelFromBundles:因为模型文件是资源文件,所以会坐BUNDLES里面,所以才需要写nil就得了。

    NSManagedObjectModel *model
= [NSManagedObjectModel mergedModelFromBundles:nil];

// 持久化存储调度器(持久化:把数据保存于一个文件,而不是放在内存中)

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

// 告诉CoreData数据库的讳与路径

    NSString *doc
= [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

    

    NSString *sqlitePath
= [doc stringByAppendingPathComponent:@”School.sqlite”];

    [store addPersistentStoreWithType:NSSQLiteStoreTypeconfiguration:nil URL:[NSURL fileURLWithPath:sqlitePath] options:nilerror:nil];

    

    context.persistentStoreCoordinator =
store;

下一场我们来测试一下是否可写副数据

– (void)addStudent

{

    // 创建一个生对象

//    Student *stu = [[Student alloc] init];

    Student *stu
=[NSEntityDescription insertNewObjectForEntityForName:@”Student” inManagedObjectContext:_context];

    stu.name = @”张三”;

    stu.age = @17.0;

    // 直接保存数据库

    [_context save:nil];

    

 

}

既可以保存数据了,那么就必定需要读取数据

发生个抓取的概念,使用Fetch Request对象进行抓取。看图

图片 4

– (void)readStudent

{

    //
1.FectchRequest 抓取请求对象

    NSFetchRequest *request
= [NSFetchRequest fetchRequestWithEntityName:@”Student”];

    

   //
2.执要

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

    

  for (Student *stu in stus)

  {

      NSLog(@”名字:%@ 身高:%@”,
stu.name,
stu.age);

  }

    

}

连片下去是翻新

– (void)updateStudent

{

    //
1.查找

    //
1.1FectchRequest 抓取请求对象

    NSFetchRequest *request
= [NSFetchRequest fetchRequestWithEntityName:@”Student”];

    

    //
1.2安装过滤条件

    // 查找张三

    NSPredicate *pre
= [NSPredicate predicateWithFormat:@”name
= %@”,@”张三”];

    request.predicate =
pre;

    

    //
1.3推行要

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

    //
2.创新身高

    for (Student *stu in stus)
{

        stu.age = @2.0;

    }

    // 保存

    [_context save:nil];

 

}

最终是抹

– (void)deleteStudent

{

    // 删除李四

    

    //
1.查找

    //
1.1FectchRequest 抓取请求对象

    NSFetchRequest *request
= [NSFetchRequest fetchRequestWithEntityName:@”Student”];

    

    //
1.2安装过滤条件

    // 查找张三

    NSPredicate *pre
= [NSPredicate predicateWithFormat:@”name
= %@”,@”李四”];

    request.predicate =
pre;

    

    //
1.3履要

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

    //
2.删除

    for (Student *stu in stus)
{

        [_context deleteObject:stu];

    }

    

    //
3.保存

    [_context save:nil];

}

流淌:CoreData使用状况

一般在店堂外用于少,用的可比多得经常FMDatabases。

数存储结构比较简单的时刻用CoreData,开发效率会高点,比较面向对象且不要写SQL语句

FMDatabases数据结果比较复杂的时光,表及发明中的干比较多之上用

哼了,以上就是CoreData的简约用,当然了CoreData也足以展开关联,分页等操作。会陆续更新!图片 5

DEMO下载地址:链接: http://pan.baidu.com/s/1i3sBsnN 密码: 5kgx

倘哪里有摩擦或发什么问题得以天天沟通自身,转载请注明出处,谢谢!

 

网站地图xml地图