【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];
}
- (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】 简单地使用的更多相关文章
- 【CoreData】多个数据库使用
在实际开发中,往往需要每个模块使用不同数据库,而CoreData也具备这样的功能,使用起来也很方便: 首先我们创建2个模型文件(School和Educationist) // 1.创建模型文件 (相当 ...
- CoreData介绍
http://blog.csdn.net/zh952016281/article/details/52105683 写在前面 在CoreData中有一些常用的类,称呼可能各不相同.所以这里先约定一些关 ...
- 认识CoreData—初识CoreData
http://www.cocoachina.com/ios/20160729/17245.html 这段时间公司一直比较忙,和组里小伙伴一起把公司项目按照之前逻辑重写了一下.由于项目比较大,还要兼顾之 ...
- CoreData的一些简单运用
1.首先创建一个新的工程 记得勾选下面的 Use Core Data 万恶分割线———————————————————————— 然后点击Add Entity 创建一个类似于表名. 万恶分割线———— ...
- iOS 中CoreData的简单使用
原文链接:http://www.jianshu.com/p/4411f507dd9f 介绍:本文介绍的CoreData不在AppDelegate中创建,在程序中新建工程使用,即创建本地数据库,缓存数据 ...
- 自己写简单CoreDataManager封装对CoreData操作
关于CoreData的介绍太多,网上一搜大把全是,这里不介绍CoreData,直接上代码,注释写的很详细,应该很容易理解,暂时现做简单的增删该查,后面有时间再做修改完善. CoreDataManage ...
- CoreData的简单使用(一)数据库的创建
iOS有多种数据持久化得方式 plist文件(属性列表) preference(偏好设置,NSUserDefaults) NSKeyedArchiver(归档,用的不多) SQLite 3 (需要导入 ...
- CoreData的简单使用(二)数据的增删改查,轻量级的版本迁移
上一篇中我们已经使用CoreData创建了一个SQLite数据库 CoreData的简单使用(一)数据库的创建 现在对数据库进行数据的CRUD(增删改查) 1.Data Model 的设置 创建一个D ...
- iOS 让CoreData更简单些
原文:http://www.cocoachina.com/ios/20170421/19096.html 前言 本文并不是CoreData从入门到精通之类的教程, 并不会涉及到过多的原理概念描述, 而 ...
随机推荐
- Make something people want
<黑客与画家>开头首先介绍了书的作者格雷厄姆的其人其事,他的成长涉猎很多,大学学哲学,研究生学计算机,博士时对绘画感兴趣,后来做了两年画家,但是入不敷出,后来他和朋友开始合伙开发一个搭建网 ...
- Redis代码阅读之Hacking Strings
Hacking Strings The implementation of Redis strings is contained in sds.c ( sds stands for Simple Dy ...
- 从C#到Objective-C,循序渐进学习苹果开发(1)--准备开发账号和开发环境
本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换历程体验,因为一旦方方面面都精通了,也 ...
- iOS阶段学习第二天笔记(数据类型与进制)
iOS学习(C语言)知识点整理笔记 1.C语言32个关键字 一.存储相关 1)auto 声明自动变量 2)register 声明寄存器变量 3)volatile 声明的变量在程序执行过程中可能被隐含的 ...
- Hibernate框架之双向多对多关系映射
昨天跟大家分享了Hibernate中单向的一对多.单向多对一.双向一对多的映射关系,今天跟大家分享下在Hibernate中双向的多对多的映射关系 这次我们以项目和员工举个栗子,因为大家可以想象得到,在 ...
- 使用MiniProfiler跟踪MVC + EF + Bootstrap 2 权限管理系统的性能消耗
安装MiniProfiler 在MVC + EF + Bootstrap 2 权限管理系统入门级(附源码)文章中下载了它的源码,调试模式下打开一个页面都要再2.5秒以上,所以使用MiniProfile ...
- jquery属性选择器(匹配具有指定属性的元素)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- jquery内容选择器(匹配内容不为空的元素)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 【Java每日一题】20161017
20161014问题解析请点击今日问题下方的"[Java每日一题]20161017"查看 package Oct2016; import java.util.ArrayList; ...
- [修复] Firemonkey 使用 DrawPath 断线问题(Android & iOS 平台)
问题:使用 Canvas.DrawPath 绘制时,最后一点无法画到终点位置.(这个问题要在粗线才能察觉) 适用:Delphi 10 Seattle (或更早的版本) for Android & ...