【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从入门到精通之类的教程, 并不会涉及到过多的原理概念描述, 而 ...
随机推荐
- 3.openstack之mitaka搭建keystone认证服务
认证服务keystone部署 一:安装和配置服务 1.建库建用户 mysql -u root -p CREATE DATABASE keystone; GRANT ALL PRIVILEGES ON ...
- Android Studio的git功能的使用介绍
本文介绍Android Studio(下面简称AS)中git工具的一些简单使用.因为AS为git的使用提供了很多人性化的图形界面操作,在很大程度上可以增加开发效率.本文面向新手,题主自己也是新手一枚, ...
- 从.net转型,聊聊最近一些面试,薪资和想法
上一个星期,一篇名为<.net估计要写在你手里了>几乎点燃了整个园子,有人群情激愤了,有人点赞的,有人上去打算喷博主个体无完肤的,总之,这篇博客很成功的引起一些.net 从业者的思考,也包 ...
- ASP.NET Core 1.0到底是什么?
ASP.NET Core1.0 是微软的下一代ASP.NET框架.我们将ASP.NET升级到最新版本我们会发现最高级的版本是ASP.NET 4.6对应的FrameWork版本是4.6.1. 那么很多人 ...
- ASP.NET伪静态的方法及相关资料
1. 添加URLRewriter.dll引用 2. 配置web.config的基本信息 <configSections> <section name="RewriterCo ...
- 获取MS SQL TABLE列名列表
在MS SQL Server中,想获取表的所有列名,可以使用下面SQL语句: SELECT [COLUMN_NAME] FROM [INFORMATION_SCHEMA].[Columns] WHER ...
- 【SQL】统计所有表的行数
环境:mssql ent 2k8 r2 原理:遍历所有用户表,用sp_spaceused过程分别获取每张表的行数并写入临时表,最后返回临时表 IF OBJECT_ID('tempdb..#TableR ...
- Windows Server 2012 配置多用户远程桌面
前段时间因为需要多用户同时远程连接 windows server 2012,但找了半天也没找到远程桌面管理,最后从搜索中找到如下方法,经测试可行! 打开注册表,进入路径: [HKEY_LOCAL_MA ...
- 【Java每日一题】20161103
package Nov2016; import java.util.List; public class Ques1103 { public void method01(String[] array) ...
- [函数] Firemonkey iOS 指定目录不要备份到 iCloud
uses iOSapi.Foundation, Macapi.Helpers; // 不要备份到 iCloud by Aone function addSkipBackupAttributeToIte ...