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

    在启动或者安装ES之前,需要先下载JDK 1.7以上的版本,对于2.0来说,要求JDK1.8以上. 检查JDK的版本 使用命令: java -version echo $JAVA_HOME 查看JDK ...

  2. 简述ES5 ES6

    很久前的某一天,一位大神问我,你知道ES6相对于ES5有什么改进吗? 我一脸懵逼的反问,那个啥,啥是ES5.ES6啊. 不得不承认与大神之间的差距,回来深思了这个问题,结合以前的知识,算是有了点眉目. ...

  3. MVC中Json的使用:Controller中Json的处理

    一.当查询得到的数据符合前台要求,不需要做任何处理,直接DataList To Json 返回前台. 代码: , out recordCount); return Json(allEntities, ...

  4. 使用Uploadify(UploadiFive)多文件上传控件遇到的坑

    最近项目中需要实现多文件上传功能,于是结合需求最终选择了Uploadify这一款控件来实现.相比其他控件,Uploadify具有简洁的界面,功能API基本可以解决大多数需求,又是基于jquery的,配 ...

  5. 非常完善的Log4net详细说明

      4.1.6 <filter> 过滤器,只能作为<appender>的子元素. 支持的属性: type 必须的,Filter的类型 支持的子元素: param 0个或多个,  ...

  6. AES加密类

    代码: using System; using System.IO; using System.Security.Cryptography; using System.Text; namespace ...

  7. No assembly found containing an OwinStartupAttribute

    自从在ASP.NET MVC中使用NuGet添加SignalR类库之后,再次运行程序时,它出现了一个异常: Server Error in '/' Application. The following ...

  8. C#导出Excel那些事

    Excel导出 Excel导出的意义 因为在项目中有些报表数据客户需要导出功能,那么导出为Excel就十分有必要了,可是有些客户的机器上并没有安装Excel或者安装的版本参差不一.那么我们在这样的情况 ...

  9. 使用MySQL WorkBench导入数据库

    1. 在MySQL WorkBench的Server Administrator中双击要连接的数据库: 2. 点击左边的Data Import/Restore; 3. Import from Dump ...

  10. 【Java每日一题】20161018

    20161017问题解析请点击今日问题下方的"[Java每日一题]20161018"查看 package Oct2016; public class Ques1018 { publ ...