先介绍一下什么是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

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

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

// 3.创建实体类

// New File ———— CorData ———— NSManagedobject subclass ———— Next(记得选择需要关联的表)这样就会自动生成相应的模型

// 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对象进行抓取。看图

- (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也可以进行关联,分页等操作。会陆续更新!
DEMO下载地址:链接: http://pan.baidu.com/s/1i3sBsnN 密码: 5kgx
如果哪里有错或者有什么问题可以随时联系我,转载请注明出处,谢谢!

【CoreData】 简单地使用的更多相关文章

  1. 【CoreData】多个数据库使用

    在实际开发中,往往需要每个模块使用不同数据库,而CoreData也具备这样的功能,使用起来也很方便: 首先我们创建2个模型文件(School和Educationist) // 1.创建模型文件 (相当 ...

  2. CoreData介绍

    http://blog.csdn.net/zh952016281/article/details/52105683 写在前面 在CoreData中有一些常用的类,称呼可能各不相同.所以这里先约定一些关 ...

  3. 认识CoreData—初识CoreData

    http://www.cocoachina.com/ios/20160729/17245.html 这段时间公司一直比较忙,和组里小伙伴一起把公司项目按照之前逻辑重写了一下.由于项目比较大,还要兼顾之 ...

  4. CoreData的一些简单运用

    1.首先创建一个新的工程 记得勾选下面的 Use Core Data 万恶分割线———————————————————————— 然后点击Add Entity 创建一个类似于表名. 万恶分割线———— ...

  5. iOS 中CoreData的简单使用

    原文链接:http://www.jianshu.com/p/4411f507dd9f 介绍:本文介绍的CoreData不在AppDelegate中创建,在程序中新建工程使用,即创建本地数据库,缓存数据 ...

  6. 自己写简单CoreDataManager封装对CoreData操作

    关于CoreData的介绍太多,网上一搜大把全是,这里不介绍CoreData,直接上代码,注释写的很详细,应该很容易理解,暂时现做简单的增删该查,后面有时间再做修改完善. CoreDataManage ...

  7. CoreData的简单使用(一)数据库的创建

    iOS有多种数据持久化得方式 plist文件(属性列表) preference(偏好设置,NSUserDefaults) NSKeyedArchiver(归档,用的不多) SQLite 3 (需要导入 ...

  8. CoreData的简单使用(二)数据的增删改查,轻量级的版本迁移

    上一篇中我们已经使用CoreData创建了一个SQLite数据库 CoreData的简单使用(一)数据库的创建 现在对数据库进行数据的CRUD(增删改查) 1.Data Model 的设置 创建一个D ...

  9. iOS 让CoreData更简单些

    原文:http://www.cocoachina.com/ios/20170421/19096.html 前言 本文并不是CoreData从入门到精通之类的教程, 并不会涉及到过多的原理概念描述, 而 ...

随机推荐

  1. Struts2 源码分析——核心机制

    MVC和三层的看法 通过上一章我们明白我们要学习的知识点和目标.所以这章我将从使用者来讲struts2的机制原理.我们都清楚的知道struts2的核心思想是MVC思想.MVC全名是Model View ...

  2. HT For Web 拓扑图背景设置

    HT For Web 的HTML5拓扑图组件graphView背景设置有多种途径可选择: divBackground:通过css设置graphView对应的div背景 Painter:通过graphV ...

  3. ASP.NET MVC必知必会知识点总结(二)

    一.实现Controller的依赖注入: 1.自定义继承DefaultControllerFactory 类的控制器工厂类并重写GetControllerInstance方法:(如:InjectCon ...

  4. log4net 既要按日期分割日志文件,又要按文件大小分割。

    <appender name="DebugAppender" type="log4net.Appender.RollingFileAppender"> ...

  5. 在IIS服务器上部署svg/woff/woff2字体

    在url没错的前提下,字体文件报404错误,如.woff,.woff2 出错原因: IIS不认SVG,WOFF/WOFF2这几个文件类型 解决方案: 在IIS服务器上部署svg/woff/woff2字 ...

  6. Java连接MYSQL 数据库的连接步骤

    这篇文章主要以MySQL为例讲下Java如何连接到数据库的. 当然,首先要安装有JDK(一般是JDK1.5.X).然后安装MySQL,这些都比较简单,具体过程就不说了.配置好这两个环境后,下载JDBC ...

  7. 第 14 章 CSS 颜色与度量单位

    学习要点: 1.颜色表方案 2.度量单位 主讲教师:李炎恢 本章主要探讨 HTML5 中 CSS 颜色和度量单位等问题,包括颜色的选取方式.相对长度和绝对长度等. 一.颜色表方案 颜色的表现形式主要有 ...

  8. js控制页面显示和表单提交

    早期的web页面在显示方面一般在后台进行控制,虽然对后台开发来讲是比较容易做到的,但是涉及到一个问题,那就是数据库压力. 因为要控制显示,所以会比较频繁的从数据库中来回调用. 现在的js功能越来越强, ...

  9. Lucene.net站内搜索—1、SEO优化

    目录 Lucene.net站内搜索—1.SEO优化 Lucene.net站内搜索—2.Lucene.Net简介和分词Lucene.net站内搜索—3.最简单搜索引擎代码Lucene.net站内搜索—4 ...

  10. java基础盲点梳理

    类的基本成员才有默认值 finalize()并非析构,Java中没有析构,使用finalize()通常在于跨语言调用情景:比如使用C进行malloc内存分配以后,要在finalize()方法中进行fr ...