先介绍一下什么是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. 关于DataTable的两篇基础文章

    DataTable有的时候还是很有用的.记录两篇不错的文章,当字典 1.http://blog.csdn.net/imagse/article/details/3085870 2.https://ms ...

  2. ElasticSearch 配置详解

    配置文件位于es根目录的config目录下面,有elasticsearch.yml和logging.yml两个配置,主配置文件是elasticsearch.yml,日志配置文件是logging.yml ...

  3. [python基础]关于装饰器

    在面试的时候,被问到装饰器,在用的最多的时候就@classmethod ,@staticmethod,开口胡乱回答想这和C#的static public 关键字是不是一样的,等面试回来一看,哇,原来是 ...

  4. Android Studio快捷键每日一练(6)

    原文地址:http://www.developerphil.com/android-studio-tips-of-the-day-roundup-6/ 51.重构代码 苹果:Ctrl+T    Win ...

  5. 30天C#基础巩固------了解委托,string练习

    ---->了解委托.     生活中的例子:我要打官司,我需要找一个律师,法庭上面律师为当事人辩护,它真正执行的是当事人的陈词,这时律师 就相当于一个委托对象.当事人则委托律师为自己辩解.    ...

  6. .NET中类(class)与结构(struct)

    结构是值类型:值类型在栈上分配空间:  类是引用类型:引用类型在堆栈上分配空间:  虽然结构与类的类型不一样,可是他们的基类型都是对象(object),c#中所有类型的基类型都是object:  虽然 ...

  7. ASP.NET页面事件:顺序与回传详解

    当页面被提交请求第一个方法永远是构造函数.您可以在构造函数里面初始一些自定义属性或对象,不过这时候因为页面还没有被完全初始化所以多少会有些限制.特别地,您需要使用HttpContext对象.当前可以使 ...

  8. 最小生成树---Kruskal/Prime算法

    1.Kruskal算法 图的存贮采用边集数组或邻接矩阵,权值相等的边在数组中排列次序可任意,边较多的不很实用,浪费时间,适合稀疏图.      方法:将图中边按其权值由小到大的次序顺序选取,若选边后不 ...

  9. 暴风冯鑫:去美国香港的99%都亏,互联网公司打死都要回A股

        “上市之后,我回答得最多的两句话:一句是运气好:另一句是有好运气要好好地使用它.” 5月18日,暴风科技上市55天后,首享科技大厦办公室里,暴风科技CEO冯鑫这样对我说. 在经历了36个涨停之 ...

  10. 一个十年java程序员的心得

    展望未来,总结过去10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告 走过的路,回忆起来是那么曲折,把自己的一些心得体会分享给程序员兄弟姐妹们,虽然时代在变化,但是很可能你也会走我已经做过的1 ...