iOS-coredata增删改查

IOS之分析网易新闻存储数据(CoreData的使用,增删改查) CoreData很强大,用起来很方便,是一个不错的存储数据的好方法。 1、网易新闻用CoreData存储了新闻列表,因为我打开网易新闻的Documents时看到了三个文件:newsapp.sqlite,newsapp.sqlite-shm,newsapp.sqlite-wal:这三个文件是你在用CoreData时自动生成的。所以我确定他是用coredata存储的数据而不是sqlite数据库。(CoreData优点:能够合理管理内存,避免使用sql的麻烦,高效) 2、网易会隔一断时间请求一次网络,具体时间有可 阅读详情

1.创建:

创建有两种形式:

(1)创建工程的时候勾选 UserCoreData选项 如图
 
我们会发现,系统已经帮我们创建了一个后缀名为”.xcdatamodeld”的文件 
 
这个待会再介绍

(2)新建一个DataModel 文件
使用 Cmd+N键 或者 File->New->File 


名字自己定,创建一个xcdatamodeld文件

我们打开这个可以看到是一个这样的文件

现在我们来新建一个实体 点击 Add Entity

这里说明一下 一个 Entity 是一个数据实体 相当于数据库的一个表

这里增加了一个 Student

好了我们的可视化操作就是这些了,下面来创建模型文件

在创建之前我要特别说一下

对于每一个 entity 实体类,Build 过后 Xcode 都会自动帮我们生成相应的实体类代码,生成的代码不会在工程目录中显示出来,但是可以通过导入头文件索引到;当然也可以配置成手动生成的,选中对应的 Entity 然后点击右侧面板的 Codegen,把 ClassDefinition 修改成 Manual/None,然后 Xcode 就不会再自动生成了。 如图所示 

Editor ->Create NSManagedObject Subclass 
 
勾选我们生成的 DataModel 即可 


生成了我们显示这四个文件

这里贴出部分主要代码

- (void)viewDidLoad {
    [super viewDidLoad];

    ///拿到appDelegate
    appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;

    ///创建增删改查按钮
    [self createBtns];
}
1
2
3
4
5
6
7
8
9
下面是创建按钮的代码

-(void)createBtns
{
    NSArray *butsNameArray = @[@"增",@"删",@"改",@"查"];
    int butW = 50;
    for (int i = 0; i < butsNameArray.count; i++) {
        ///btn name
        NSString * btnName = butsNameArray[i];
        UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
        button.frame = CGRectMake(i * butW + 10 * i, 200, butW, butW);
        button.backgroundColor = [UIColor blueColor];
        button.layer.cornerRadius = 5;
        button.layer.masksToBounds = YES;
        [button setTitle:btnName forState:UIControlStateNormal];
        [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
        [button addTarget:self
                   action:@selector(clickBtnAction:)
         forControlEvents:UIControlEventTouchUpInside];
        button.tag = 1000 + i;
        [self.view addSubview:button];
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
点击按钮的代码

-(void)clickBtnAction:(UIButton *)btn
{
    NSInteger tag = btn.tag - 1000;
    switch (tag) {
        case 0:
            [self addAction];       ///增
            break;
        case 1:
            [self deleteAction];    ///删
            break;
        case 2:
            [self updateAction];    ///改
            break;
        case 3:
            [self selectAtion];     ///查

        default:
            break;
    }

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
让我们来看一下 增加一个实体的代码

运行的效果图如下: 


让我们点击 按钮 “增”

///增
-(void)addAction
{
    ///此代码等价于 ==  类的 alloc init
    Student *stu = [NSEntityDescription insertNewObjectForEntityForName:@"Student"
                                                 inManagedObjectContext:appDelegate.persistentContainer.viewContext];

    ///赋值
    stu.name = [NSString stringWithFormat:@"学生%d",arc4random()%10];
    stu.sex = arc4random()%2 == 0 ? YES:NO;
    stu.age = arc4random()%15;

    ///打印
    NSLog(@"增加了一个学生 名字是:%@ 性别是:%@ 年龄是:%hd",stu.name,stu.sex == YES ? @"男":@"女",stu.age);

    [appDelegate saveContext];

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
下面是操作10次后的结果: 


下面我们来执行查询的代码

///查
-(void)selectAtion
{
    ///先读取这个类 这里有点像字典里面根据 key 查找 value 的意思
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Student"
                                              inManagedObjectContext:appDelegate.persistentContainer.viewContext];
    ///创建查询请求
    NSFetchRequest *request = [[NSFetchRequest alloc]init];
    ///设置查询请求的 实体
    [request setEntity:entity];
    ///获取查询的结果
    NSArray *resultArray = [appDelegate.persistentContainer.viewContext executeFetchRequest:request
                                                                                      error:nil];
    ///打印查询结果
    for (Student *stu in resultArray) {
        NSLog(@"查询到一个学生 名字是:%@ 性别是:%@ 年龄是:%hd",stu.name,stu.sex == YES ? @"男":@"女",stu.age);
    }

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
结果如下: 


我们也可以通过条件查询 这里的条件查询是用的 NSPredicate 谓词查询,至于谓词查询的语法,这里不做一一赘述,有时间博主会奉上谓词查询语法 
我们通过添加

///这是查询条件
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age=10"];
    [request setPredicate:predicate];
1
2
3
这两行代码 查询 整体代码如下

///查
-(void)selectAtion
{
    ///先读取这个类 这里有点像字典里面根据 key 查找 value 的意思
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Student"
                                              inManagedObjectContext:appDelegate.persistentContainer.viewContext];
    ///创建查询请求
    NSFetchRequest *request = [[NSFetchRequest alloc]init];
    ///设置查询请求的 实体
    [request setEntity:entity];

    ///这是查询条件
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age=10"];
    [request setPredicate:predicate];

    ///获取查询的结果
    NSArray *resultArray = [appDelegate.persistentContainer.viewContext executeFetchRequest:request
                                                                                      error:nil];
    ///打印查询结果
    for (Student *stu in resultArray) {
        NSLog(@"查询到一个学生 名字是:%@ 性别是:%@ 年龄是:%hd",stu.name,stu.sex == YES ? @"男":@"女",stu.age);
    }

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
我们可以看到结果如下 
 
年龄 = 10 的人

接下来我们来看删除

删除的代码如下,我这里示范的删除年龄为10 的学生

///删
-(void)deleteAction
{
    ///读取所有学生的实体
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Student"
                                              inManagedObjectContext:appDelegate.persistentContainer.viewContext];
    ///创建请求
    NSFetchRequest *request = [[NSFetchRequest alloc]init];
    [request setEntity:entity];

    ///创建条件 年龄 = 10 的学生
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age=10"];
    [request setPredicate:predicate];

    ///获取符合条件的结果
    NSArray *resultArray = [appDelegate.persistentContainer.viewContext executeFetchRequest:request
                                                                                      error:nil];
    if (resultArray.count>0) {
        for (Student *stu in resultArray) {
            ///删除实体
            [appDelegate.persistentContainer.viewContext deleteObject:stu];
        }
        ///保存结果并且打印
        [appDelegate saveContext];
        NSLog(@"删除年龄为10的学生完成");
    }else{
        NSLog(@"没有符合条件的结果");
    }

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
紧接着删除完后我们查询所有的学生 打印结果如下

接着我们来看改的代码

///改
-(void)updateAction
{
    ///读取所有学生的实体
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Student"
                                              inManagedObjectContext:appDelegate.persistentContainer.viewContext];
    ///创建请求
    NSFetchRequest *request = [[NSFetchRequest alloc]init];
    [request setEntity:entity];

    ///创建条件 年龄 < 10 的学生
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age<10"];
    [request setPredicate:predicate];

    ///获取符合条件的结果
    NSArray *resultArray = [appDelegate.persistentContainer.viewContext executeFetchRequest:request
                                                                                      error:nil];
    if (resultArray.count>0) {
        for (Student *stu in resultArray) {
            ///把年龄 + 10岁
            stu.age = stu.age + 10;
            ///并且把名字添加一个修
            stu.name = [NSString stringWithFormat:@"%@修",stu.name];
        }
        ///保存结果并且打印
        [appDelegate saveContext];
        NSLog(@"修改学生信息完成");
    }else{
        NSLog(@"没有符合条件的结果");
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
我们查询年龄< 10 的学生 把年龄+10 并且在名字后面 添加一个修 

--------------------- 
作者:付佳 
来源:优快云 
原文:https://blog.youkuaiyun.com/wanna_dance/article/details/73550428?utm_source=copy 
版权声明:本文为博主原创文章,转载请附上博文链接!

IOS之分析网易新闻存储数据 CoreData的使用 增删改查 如何使用CoreData实现增删改查,存储数据方便 立即下载

相关推荐

ios-CoreData 增删改查.zip

简单实现了对数据的增删改查,都有注释,另外我还写了一篇简书,特别详细,简单粗暴,是人都看懂~~~ 简书: http://www.jianshu.com/p/7c1ac5ce614b github: https://github.com/ty82885279/CoreData

iOS -coredata增删改查

1.创建: 创建有两种形式: (1)创建工程的时候勾选 UserCoreData选项 如图   我们会发现,系统已经帮我们创建了一个后缀名为”.xcdatamodeld”的文件    这个待会再介绍 (2)新建一个DataModel 文件 使用 Cmd+N键 或者 File-&gt;New-&gt;File  名字自己定,创建一个xcdatamodeld文件 我们打开这个可以看到是一个...

weixin_39893960的博客 211

车辆动力学仿真模型的可信度评估方法

以转向工况测试为例,实车采集的方向盘转角作为车辆动力学模型的输入,记录车辆动力学模型的横摆角速度的输出结果,计算横摆角速度的幅频特性,根据《GB/T 6323-2014 转向盘角脉冲试验》的方法,获取横摆角速度峰值、横摆角速度谐振峰频率、横摆角速度谐振峰水平,与采集的实车结果对比,并计算车辆动力学模型和实车对于关键对比参数的相对误差。由公式(2)计算可得,在制动工况和转向工况测试下,车辆动力学模型和实车的纵向车速、制动减速度、制动距离、横摆角速度基本一致,精度> 85%,具有较好的精度。

wangchen900705的博客 1958

iOS开发 -- 数据库(增删改查)

先为数据库建立一个数据库操作类 数据库操作类 只是为我们提供两个功能 打开数据库和关闭数据库 想要使用SQLite需要进行两步操作: 1:导入动态连接库, libsqlite3.0.dylib 2: 引⼊ #import "DataBaseHandle.h" static sqlite3 *sqlite = nil; @implementation DataBaseHandle //对于应用

拾光Blog 567

深入解析DDR5 SDRAM的ODT模式:时序图与状态表实战指南

本文深入解析了DDR5 SDRAM的ODT模式,详细阐述了其五种工作状态及其在读写操作中的动态切换逻辑。通过解读JESD79-5标准中的时序图与状态表,并结合模式寄存器配置实战,为硬件工程师和爱好者提供了优化信号完整性、提升系统稳定性的关键指南。

gpu4optimizer的博客 699

告别sgmediation!Stata中介效应分析新选择:mediation包完整操作指南

本文介绍了Stata中介效应分析从传统sgmediation命令向mediation包的范式升级。重点阐述了如何使用medeff和medsens命令进行更严谨的因果推断,并执行关键的敏感性分析,以评估结果对未观测混杂的稳健性,为学术研究提供发表级的分析工具。

redis7keeper的博客 1160

iOS 10 coreData 版本迁移

以前的方法需要在 1设置新版本 2  在Appdelegate.m的 - (NSPersistentStoreCoordinator *)persistentStoreCoordinator方法里的这个代码的选项参数里面添加一个字典 @ {NSMigratePersistentStoresAutomaticallyOption:@ YES,NSInferMappingModelAut

YST的博客 933

2018南京大学计算机夏令营机试

1. Count number of binary strings without consecutive 1’s Given a positive integer n(3≤n≤90), count all possible distinct binary strings of length n such that there are no consecutive 1's . Examples...

climber16的博客 1万+

iOS中CoreData的增删改查相关使用技巧

创建项目时选择 创建实体(选择项目中的.xcdatamodeld后缀文件) 创建实体类 将AppDelegate中的coreData相关剪切到自己新建的类中(CoreDataStack)里面有增删改查的方法 // // CoreDataStack.m // MyCoreDataDemo // // Created by 陈帆 on 2019/11/6. // Copyright...

天道酬勤 403

Switch游戏安装新思路:抛弃Commander One,试试这款免费的Mac神器OpenMTP

本文介绍了Mac用户安装Switch游戏的新选择——免费工具OpenMTP,对比收费软件Commander One,OpenMTP在MTP连接稳定性和文件管理上更具优势。详细解析了OpenMTP的安装配置、核心功能及实战操作,帮助用户高效完成游戏安装,特别适合已破解并安装DBI的Switch用户。

weixin_30664051的博客 587

2025年09月中国电子学会青少年软件编程(Python)等级考试试卷(一级)答案 + 解析

2025年09月中国电子学会青少年软件编程(Python)等级考试试卷(一级)答案 + 解析

伶俐角少儿编程 639

iOS CoreData 使用

查询操作  AppDelegate * app = [UIApplication sharedApplication].delegate;       第一步获取下当前数据库的 内容 上下文    NSManagedObjectContext * context = app.managedObjectContext;    第二步初始化一个查询请求    NSFetchRequest *fetch...

weixin_42140381的博客 262

用 CL_SALV_TREE 把层级数据做成一棵会呼吸的 ABAP ALV 树:从类继承扫描到事件交互的完整拆解

本文介绍了SAP ABAP中使用CL_SALV_TREE实现树形ALV报表的方法。该技术将层级数据(如类继承关系)以可展开/折叠的树形结构展示,解决了传统ALV Grid无法直观显示层次结构的问题。核心实现采用"数据表+层级表"分离的设计模式:数据表存储节点业务信息,层级表维护父子关系。通过add_node方法动态构建树形结构,支持设置节点文本、图标和事件。文中提供了完整示例代码,演示了如何递归扫描ABAP类继承关系并构建树形ALV,这种技术特别适用于展示类族谱、权限树等层级数据,能显著

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 207

iOS CoreData (一) 增删改查

Core Data是iOS5之后才出现的一个框架,本质上是对SQLite的一个封装,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中,也能够将保存在数据库中的数据还原成OC对象,通过CoreData管理应用程序的数据模型,可以极大程度减少需要编写的代码数量! 1、首先创建一个coreData 模型文件:系统创建或者自己创建 ...

wsl2ls的博客 396

点云从入门到精通技术详解100篇-基于点云语义分割的电力线提取及聚类研究

在现代社会,电力一直扮演着最重要的角色之一。它不仅与人民的生活息息相关,更是一个国家发展的命脉。近年来,随着我国各特高压输电线路建成(比如2022年1月份白鹤滩江苏特高压输电线路的放线)以及电网规模的不断扩大,我国年发电量稳步上升,人民的生活水平越来越高。我国土地辽阔,输电线路分布广泛,再加上地形环境复杂多样,电力线可能遭受风吹雨晒甚至是冰雪寒灾的影响。因此,为了保障电力线的可靠供电,防止停电意外发生,电力部门要定期对输电线路进行检查。目前我国主要。

getusushu的博客 1010

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

iOS CoreData之单表操作(增删改查)

CoreData框架, 具有一种对象关系映射机制, 即能够将OC对象转化为数据保存在SQLite(数据库)中, 同时也能够将SQLite中的数据还原为OC对象, 而在此相互转化过程中, 我们无需写繁琐的sql语句. 接下来以单表的增删改查为例: 如果你一开始就能预测到你得工程会用到数据库, 那么创建工程之时, 请不要忽视Xcode对你善意的提醒: 当然, 如果你在创建工程之初, 操作

Macro 1963

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

iOS CoreData的使用,增删改查

、首先: 1、网易新闻用CoreData存储了新闻列表,因为我打开网易新闻的Documents时看到了三个文件: newsapp.sqlite,newsapp.sqlite-shm,newsapp.sqlite-wal:这三个文件是你在用CoreData时自动生成的。所以我确定他是用coredata存储的数据而不是sqlite数据库。(CoreD

你有故事,我囿酒 809

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

iOS_CoreData的增删改查

一直在用FMDB,不想再写sql语句了,所以改投coredata 建了两个

稀里糊涂司令官的专栏 617

华山论剑之iOS中(数组,字典,SQLite,CoreData)的“增删改查“

我们的生活态度就应该是 “不抱怨” ! 其实我想写这篇文章很久了,因为自己做的iOS开发 ,对数据这一块有这极高的要求.所以一些必须的存储数据的使用,我们都有必要熟悉用法.在以前我的简书中我也是写过数据持久化,但是我觉得那一篇是不够完整的,所有我把"增删改查"这个话题单独拿出来说一下. 今天主要说4个方面的增删改查,分别是数组,字典,SQLite数据库,CoreData数据. 数组 首先说一下数组的增删改查.数组结构是我们做开发中经常使用的一种结构.然后看一下数组的"增删改查"是如何进行的吧.当然.

得不到的永远是骚栋. 661

iOS CoreData增删改查

下面是coredata对sqllite增删改查,多表查询,模糊查询等操作的代码,如下。 #import "ViewController.h" #import "SiteList+CoreDataProperties.h" #import "Nation+CoreDataProperties.h" @interface ViewController () @property (strong,non

Sunshine586983的博客 568
上一篇: 识别手机上是否安装某个app
下一篇: 上传【cocoapods】自己的公有库的正确姿势
董其林
博客等级 码龄11年 1粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值