CoreData基础
CoreData用于做数据持久化,适合大数据量的存储和查询
CoreData不是数据库 CoreData可以使用数据库 ,XML等方式来存储数据
CoreData使用面向对象的方式操作数据
CoreData操作数据无需编写SQL语句
使用时 需要导入CoreData框架
//----------------------------------------------------------
NSManagedObjectContext 负责应用和数据库之间的交互
NSPersistentStoreCoordinator 添加持久化存储库(初始化后 给其初始化一个数据文件)
NSManagedObjectModel 被管理的对象模型
NSEntityDescription :实体描述 向实体中添加数据-->给context保管
#import <CoreData/CoreData.h>
#import "User.h"
#import "Movie.h"
@interface ViewController (){
NSManagedObjectContext *_context;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//打开数据库
[self openDataBase];
//添加数据
// [self addUser];
//查询数据
[self queryData];
//修改数据
// [self updateData];
//删除数据
[self deleteData];
NSLog(@"-------------------------");
[self queryData];
}
- (void)openDataBase{
//1.NSManagedObjectModel 加载数据模型文件
NSURL *url = [[NSBundle mainBundle]URLForResource:@"MyData" withExtension:@"momd"];
NSManagedObjectModel *objectModel = [[NSManagedObjectModel alloc]initWithContentsOfURL:url];
//2.创建 持久化存储库 带有(载入)数据模型文件
NSPersistentStoreCoordinator *psc = [[NSPersistentStoreCoordinator alloc]initWithManagedObjectModel:objectModel];
//持久化存储库 存放到路径
NSString *filePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/MyData.sqlite"];
NSLog(@"filePath : %@",filePath);
NSURL *url1 = [NSURL fileURLWithPath:filePath];
NSError *error = nil;
//3.设置 持久化存储库
[psc addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:url1 options:nil error:&error];
if (error) {
NSLog(@"开启失败");
}else{
NSLog(@"开启成功");
}
_context = [[NSManagedObjectContext alloc]init];
//context 中的数据存储到指定的 "psc" 中(一次指定后面都不会用psc了) -->后面所有操作对context操作
_context.persistentStoreCoordinator = psc;
}
- (void)addUser{
//添加 实体 数据---->向User实体中添加数据-->给context保管
User *user = [NSEntityDescription insertNewObjectForEntityForName:@"User" inManagedObjectContext:_context];
user.name = @"张杰";
user.age = @22;
user.height = @177;
Movie *movie = [NSEntityDescription insertNewObjectForEntityForName:@"Movie" inManagedObjectContext:_context];
movie.movieName = @"速度与激情";
movie.movieID = @1003;
movie.price = @152;
Movie *movie1 = [NSEntityDescription insertNewObjectForEntityForName:@"Movie" inManagedObjectContext:_context];
movie1.movieName = @"恋爱男女";
movie1.movieID = @1004;
movie1.price = @112;
//添加数据后保存数据
BOOL isSuccess = [_context save:nil];
if (isSuccess) {
NSLog(@"添加成功");
}else{
NSLog(@"添加失败");
}
}
- (void)queryData{
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"User"];
NSFetchRequest *request2 = [NSFetchRequest fetchRequestWithEntityName:@"Movie"];
// 在context中查询(context相当于容器)
NSArray *dataArr = [_context executeFetchRequest:request error:nil];
NSArray *arr2 = [_context executeFetchRequest:request2 error:nil];
for (User *model in dataArr) {
NSLog(@"%@ %@ %@",model.name,model.age,model.height);
}
for (Movie *model in arr2) {
NSLog(@"%@ %@ %@",model.movieName,model.movieID,model.price);
}
}
//修改数据
- (void)updateData{
//查询找到需要修改的数据
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Movie"];
//请求 设置请求条件
request.predicate = [NSPredicate predicateWithFormat:@"movieID = 1004"];
//查询-->结果
NSArray *dataArr = [_context executeFetchRequest:request error:nil];
//拿到查询到的数据
for (Movie *model in dataArr) {
//遍历出来 修改数据
model.movieName = @"大话西游";
}
//修改完成 保存
BOOL isSuccess = [_context save:nil];
if (isSuccess) {
NSLog(@"修改成功");
}else{
NSLog(@"修改失败");
}
}
- (void)deleteData{
//查询数据
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Movie"];
request.predicate = [NSPredicate predicateWithFormat:@"movieID=1004"];
NSArray *arr =[_context executeFetchRequest:request error:nil];
for (Movie *model in arr) {
//context删除数据
[_context deleteObject:model];
}
//删除数据后保存
[_context save:nil];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
CoreData基础的更多相关文章
- coreData数据操作
// 1. 建立模型文件// 2. 建立CoreDataStack// 3. 设置AppDelegate 接着 // // CoreDataStack.swift // CoreDataStackDe ...
- 从Windows角度看Mac OS X上的软件开发
如果原来从事Windows软件开发,想跨足或转换至Mac OS X环境,需要知道那些东西?有什么知识技能可以快速运用在Mac OS X环境上的?这两个问题应该是Windows开发者进入Mac OS X ...
- iOS基础教程:在建好的项目中加入CoreData[转]
这几天在做一个ios的小项目,项目中需要对数据进行基本的增删改查操作.于是就想用一把CoreData.但在创建项目初期,没有包含进CoreData.于是就在已建好的项目中加入CoreData.由于第一 ...
- 优于CoreData的Realm数据库基础教程
Realm 是一个跨平台的移动数据库引擎,于 2014 年 7 月发布,准确来说,它是专门为移动应用所设计的数据持久化解决方案之一. Realm 可以轻松地移植到您的项目当中,并且绝大部分常用的功能( ...
- iOS基础 - 数据库CoreData
一.iOS应用数据存取的常用方式 XML属性列表 —— PList NSKeyedArchiver 归档 Preference(偏好设置) SQLite3 Core Data 二.Core Data简 ...
- Swift基础之CoreData的使用
以前使用过OC版本的CoreData应该很好理解Swift方式,所以这里简单的展示一下,增删改查的方法使用,同时给大家说一下创建步骤,方便大家的使用,转载请注明出处,谢谢~ 步骤一:创建一个Swift ...
- iOS-数据持久化-CoreData
CoreData详解 介绍: 在Cocoa环境下,如果你想使用数据库(如sqlite),你可以使用sql语句的方式通过相关的工具类进行数据库的直接操作.当然你也可以通过别人封装之后的一些简单框架,使得 ...
- 【原】iOS学习之SQLite和CoreData数据库的比较
1. SQLite数据库 sqlite数据库操作的基本流程是, 创建数据库, 再通过定义一些字段来定义表格结构, 可以利用sql语句向表格中插入记录, 删除记录, 修改记录, 表格之间也可以建立联系. ...
- MagicalRecord,一个简化CoreData操作的工具库
简介 项目主页:https://github.com/magicalpanda/MagicalRecord 实例下载:https://github.com/ios122/MagicalRecord 在 ...
随机推荐
- $.each与$().each
在jquery中,遍历对象和数组,经常会用到$().each和$.each(),两个方法.两个方法是有区别的,从而这两个方法在针对不同的操作上,显示了各自的特点. $().each,对于这个方法,在d ...
- Cookie的Secure属性
基于安全的考虑,需要给cookie加上Secure和HttpOnly属性,HttpOnly比较好理解,设置HttpOnly=true的cookie不能被js获取到,无法用document.cookie ...
- 2.jenkins配置邮件提醒
1.前言 在Jenkins的使用中邮件提醒是一个常用功能,Jenkins默认安装了Mailer Plugin插件用于实现此功能. 2.邮件服务器配置 首先在Jenkins的"系统管理&quo ...
- MongoDB的C#官方驱动InvalidOperationException异常的解决办法
异常情况描述 有一个“文章”类,其中包含一个“List<段落>”类型的属性,“段落”类是抽象类,其子类有“副标题段落”.“文本段落”.“图像段落”.“附件段落”.“列表段落”等类型. 将“ ...
- 如何将数据库中的表导入到PowerDesigner中
1. 打开PowerDesigner12,在菜单中按照如下方式进行操作file->Reverse Engineer->DataBase 点击后,弹出 New Physical ...
- 有趣的代码: fixTypeof
typeof 可以匹配对象的类型,但是他的能力很弱,比如 typeof new String('123')会显示的object这是我们不想看到的结果很久以前JQ的作者通过Object.prototyp ...
- html总集
3.1清单格式:<ul> <li>...</li></ul><li>的属性:type disc 实心圆(默认) circle 空心圆 squ ...
- display转块状化
display:block block元素会独占一行,多个block元素会各自新起一行.默认情况下,block元素宽度自动填满其父元素宽度. block元素 ...
- hibernate存储过程 3
hibernate存储过程 User.hbm.xml文件的内容如下: <?xml version="1.0"?> <!DOCTYPE hibe ...
- MFC - 微软基础类库和框架
一 MFC的概念和作用 1 什么是MFC?? 全称 Microsoft Foundation Class Library我们称之为微软基础类库 1)从硬盘的存在形式上来说 MFC就是一个库(静/动态库 ...