2019独角兽企业重金招聘Python工程师标准>>>

注意在使用coreData的时候,注意创建工程的时候要勾选use core Data这一个选项,然后操作如下图:添加实体和实体类,里面和操作数据库的步骤是一样的。

然后点击新建,点击如蓝色部分的新建类:

//coreData是苹果提供的数据本地化的一种,实质还是通过数据库存储数据

//但是操作数据的时候不需要sql语句

//核心文件和类

//1.模型文件:(后缀是.xcdatamodeld),相当于数据库文件

//2.实体:相当于表

//3.实体类:表存储的对象的类

//4.上下文:关联模型文件和实际生成的数据库文件;

//coreData的使用步骤

//1.创建一个模型文件;(创建工程点use coredata就创建了)

//2.创建实体,相当于创建表

//3.创建实体类

//4.生成上下文:(操作上下文就相当于操作数据库)

#import "ViewController.h"

#import "AppDelegate.h"

#import "Student.h"

@interface ViewController ()

//上下文

@property (nonatomic,strong) NSManagedObjectContext *context;

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

//插入数据

//  [self insertData];

//数据查询

//[self selectData];

//删除数据

//[self deleteData];

//更新数据

[self updataData];

NSLog(@"%@",NSHomeDirectory());

}

#pragma mark - 更新数据

- (void)updataData{

//1.查询到需要更新的数据

NSFetchRequest *fetchrequest = [[NSFetchRequest alloc]

initWithEntityName:@"Student"];

//创建查询对象

NSPredicate *pre = [NSPredicate predicateWithFormat:@"score<70"];

//设置查询条件

fetchrequest.predicate = pre;

//查询

NSArray *array = [self.context executeFetchRequest:fetchrequest error:nil];

//2.更新属性

for (Student *stu in array) {

stu.score = @60;

}

//3.保存数据库

[self.context save:nil];

}

#pragma mark - 删除数据

- (void)deleteData{

//1.查询要删除的数据

NSFetchRequest *fetchrequest = [[NSFetchRequest alloc]

initWithEntityName:@"Student"];

//创建查询对象

NSPredicate *pre = [NSPredicate predicateWithFormat:@"name = '小明'"];

//设置查询条件

fetchrequest.predicate = pre;

//查询

NSArray *array = [self.context executeFetchRequest:fetchrequest error:nil];

//2.删除数据

for (Student *stu in array) {

[self.context deleteObject:stu];

}

//3.保存数据库

[self.context save:nil];

}

#pragma mark - 数据查询

- (void)selectData{

//1.创建一个查询对象

//参数:实体名:相当于表名

NSFetchRequest *fetchrequest = [NSFetchRequest fetchRequestWithEntityName:@"Student"];

//2.查询数据

//返回值:查询结果数据

NSArray *array = [self.context executeFetchRequest:fetchrequest error:nil];

for (Student *stu in array) {

[stu show];

}

//==========按条件查询==================

//1.创建条件对象

//条件:成绩大于80

NSPredicate *pred = [NSPredicate predicateWithFormat:@"score > 80"];

NSPredicate *pred2 = [NSPredicate predicateWithFormat:@"score > %@",@90];

NSPredicate *pred3 = [NSPredicate predicateWithFormat:@"%K > %@",@"age",@15];

//2.设置查询对象的条件

fetchrequest.predicate = pred3;

//3.查询数据

NSArray *array2 = [self.context executeFetchRequest:fetchrequest error:nil];

for (Student *stu in array2) {

[stu show];

}

//===============对查询结果进行排序======================

//1.创建排序对象

//参数1:按哪个属性进行排序

//参数2:是否升序

NSSortDescriptor *desc = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:NO];

NSSortDescriptor *desc1 = [NSSortDescriptor sortDescriptorWithKey:@"score" ascending:NO];

//2.设置查询的排序

fetchrequest.sortDescriptors = @[desc,desc1];

//3.查询数据

NSArray *array3 =   [self.context executeFetchRequest:fetchrequest error:nil];

for (Student *stu in array3) {

[stu show];

}

}

#pragma mark - 数据的插入

-(void)insertData{

//=============插入单条数据======================

//1.通过实体创建一个学生对象

//参数1:实体名(表名)

//参数2:上下文(数据库)

Student *student = [NSEntityDescription insertNewObjectForEntityForName:@"Student" inManagedObjectContext:self.context];

//2.设置学生对象的属性

student.name = @"小明";

student.age = @20;

student.score = @90;

//保存数据库

[self.context save:nil];

//========插入多条数据===========

for (int i =0 ; i<20; i++) {

//1.创建对象

Student *stu = [NSEntityDescription insertNewObjectForEntityForName:@"Student" inManagedObjectContext:self.context];

//2.设置属性

stu.name = [NSString stringWithFormat:@"name%d",i];

stu.age = [NSNumber numberWithInt:arc4random() % 10 +10];

stu.score = [NSNumber numberWithFloat:arc4random() % 100];

}

//3.保存数据库

[self.context save:nil];

}

#pragma  mark - 懒加载

- (NSManagedObjectContext *)context{

if (_context == nil) {

//1.拿到当前应用程序的代理

//拿到当前应用程序对象

//生成上下文

AppDelegate *delegate =  [UIApplication sharedApplication].delegate;

_context = delegate.managedObjectContext;

}

return _context;

}

@end

转载于:https://my.oschina.net/luhoney/blog/670508

IOS开发之coreData相关推荐

  1. iOS开发之AVKit框架使用

    2019独角兽企业重金招聘Python工程师标准>>> iOS开发之AVKit框架使用 一.引言 在iOS开发框架中,AVKit是一个非常上层,偏应用的框架,它是基于AVFounda ...

  2. (0045) iOS 开发之MBProgressHUD 源码学习

    (0045) iOS 开发之MBProgressHUD 源码学习 第一部分:学习所得和分析线程 1.  学习到了kvo 的使用 和屏幕方向的旋转判断. 2. 如果调起这个 HUD 的方法不是在主线程调 ...

  3. (0016)iOS 开发之Mac上Navicat Premium 创建远程连接和本地连接

    1.下载安装 (百度云盘里面有安装文件和注册机) 链接: https://pan.baidu.com/s/1kVG1k71 密码: mr5g 破解教程看这篇博客:http://blog.csdn.ne ...

  4. 李洪强iOS开发之RunLoop的原理和核心机制

    李洪强iOS开发之RunLoop的原理和核心机制 搞iOS之后一直没有深入研究过RunLoop,非常的惭愧.刚好前一阵子负责性能优化项目,需要利用RunLoop做性能优化和性能检测,趁着这个机会深入研 ...

  5. IOS开发之MD5加密和钥匙串的使用-oc

    IOS开发之MD5加密和钥匙串的使用-oc 源码在我的主页,md5加密是用户登录安全的一个保障.不可逆的,可以暴力破解的. // // ViewController.m // MD5演练 // // ...

  6. IOS开发之CALayer基本属性和使用

    IOS开发之CALayer基本属性和使用 // // ViewController.m // CALayer // // Created by 鲁军 on 2021/2/21. //#import & ...

  7. ios开发之plist 的文件的读写以及沙盒容器路径打印

    ios开发之plist 的文件的读写以及沙盒容器路径打印 核心代码在这里 // // ViewController.m // 21-plist存储和沙盒路径 // // Created by 鲁军 o ...

  8. IOS开发之JSON文件的读写

    IOS开发之JSON文件的读写 // // ViewController.m // 20-JSON的读写 // // Created by 鲁军 on 2021/2/13. //#import &qu ...

  9. IOS开发之JSON序列化从客户端发送到服务器端

    IOS开发之JSON序列化从客户端发送到服务端的准备工作 共有6种情况 需要序列化 请查看源代码. 服务器端接受我们采用的是java的Tomcat服务器.配合 struts 2 controller框 ...

最新文章

  1. Phabricator是什么,代码审查工具
  2. pythonurllib模块-python3之模块urllib
  3. Windows 中 SQLite3 使用(1) -- 配置
  4. sersync进行实时同步数据
  5. BYS推荐MS前端PhoneCall面试问题整理-1
  6. C# Owin 创建与测试自己的中间件Middleware
  7. php time()为空_PHP time()用法及代码示例
  8. 抓住眼球的美食海报模板|总有设计技法,吸引住你
  9. mysql uroot p 报错,MySQL链接错误集。
  10. ubuntu16.04命令行模式和图形界面互相切换
  11. Dubbo框架协议总结
  12. Linq to sql 语法方法示例
  13. 思科vrf配置实例_从原理到配置,最全的VLAN说明就在这了!
  14. 【浏览器硬件交互篇】浏览器js调用摄像头拍照
  15. Mac上的MySQL可视化工具总结
  16. 剑指offer刷题记录(C++)
  17. [寒江孤叶丶的CrossApp之旅_07][入门系列]CrossApp中信息框CAAlertView的使用
  18. 计算机应用技术5g通信,浅谈5g网络通信技术【浅谈多媒体通信技术的应用】
  19. Tomcat 安装Namecheap SSL证书教程
  20. Python练习---turtle绘图之绘制天安门

热门文章

  1. C#中JSON的理解
  2. 工厂模式和抽象工厂模式的区别
  3. symantec antivirus 10.0服务器通讯问题
  4. RedHat 5.4 RHCE VSFTPD学习笔记
  5. Golang 垃圾回收剖析
  6. 使用XSLT转换XML数据并传递参数
  7. centos7 ModuleNotFoundError: No module named 'users'
  8. 无法连接 MKS: Login(username/password)incorrect
  9. SpringCloud学习2-Springboot监控模块(actuator)
  10. 设置Eclipse智能提示