CoreData数据持久

SwiftUI 数据持久化之 数据coredata与文件存储的区别和优势 程序员区设计了两种类型的计算机文件访问方式 顺序文件访问:此时可以按顺序访问文件中的数据。提供此功能的文件,访问类型是由最常用的程序创建的,包括图像文件(来自数码相机的JEPG文件)、文本文档(用记事本或微软Word创建)、矢量文件(信条 通过设计程序,如corel绘制或Adobe插图器),工作表文件(由微软Excel创建),等等。 直接或随机的文件访问:这意味着文件中的数据可以以随机的、非顺序的方式被访问。提供这种访问类型的文件是由诸如Micro等数据库程序创建的软访问。这些文件具有精确的寄存器结 阅读详情

CoreData数据持久化

概念

CoreData是Apple官方为iOS提供的一个数据持久化方案,其本质是一个通过封装底层数据操作,让程序员以面向对象的方式存储和管理数据的ORM框架(Object-Relational Mapping:对象-关系映射,简称ORM)。虽然底层支持SQLite、二进制数据、xml等多种文件存储,但是主要还是用来操作SQLite数据库。
  • NSManagedObjectContext 是托管对象上下文,数据库的大多数操作是在这个类操作
  • NSManagedObjectModel 是托管对象模型,其中一个托管对象模型关联到一个模型文件,里面存储着数据库的数据结构。
  • NSPersistentStoreCoordinator 是持久化存储协调器,主要负责协调上下文玉存储的区域的关系。
  • NSManagedObject 是托管对象类,其中CoreData里面的托管对象都会继承此类。

创建相关文件

两种方式
  • 如果创建项目的时候就勾选了UseCoreData也就会自动生成一个.xcdatamodeld后缀的文件

01

  • 如果已有项目中就需要手动去创建一个TestModel文件

02

配置TestModel

选中.xcdatamodeld文件
03

  1. 配置Person类的参数

  2. 配置关联数据

  3. 把它们看做数据库表

  4. 设置Codegen:

    • 选择Manual/None就需要手动去创建对应的类文件(Robot+CoreDataClass 和 Robot+CoreDataProperties)
    • 选择Class Definition会在编译时生成这两个文件,不需要自己定义对应的类型
    • 选择Category/Extension,在编译时只会默认生成Robot+CoreDataProperties文件,需要手动创建Robot+CoreDataClass定义该类型

注意:目前项目只用默认选择Class Definition

代码示例

首先在AppDelegate文件里面创建persistentContainer

	lazy var persistentContainer: NSPersistentContainer = {
	        let container = NSPersistentContainer(name: "TestModel")
	        container.loadPersistentStores { description, error in
	            if let error = error {
	                fatalError("Unable to load persistent stores: \(error)")
	            }
	        }
	        return container
	    }()

在ViewController文件里面

  1. 获取存储器上下文

     func getContext() -> NSManagedObjectContext {
     		        let appDelegate = UIApplication.shared.delegate as! AppDelegate
     		        return appDelegate.persistentContainer.viewContext
     		    }
    
  2. 批量写入数据

     func inssertClasses() {
             for i in 1...100 {
                 let classId = Int16(i)
                 let name = "name"+"\(i)"
                 insertClass(classId: classId, name: name)
             }
         }
    
  3. 写入数据

     func insertClass(classId:Int16,name:String) {
    
     //获取上下文对象
    
     let context = getContext()
    
     //两种方式创建数据
    
     //1.创建一个实例并赋值
     let personEntity = NSEntityDescription.insertNewObject(forEntityName: "Person", into: context) as! Person
     //Person对象赋值
     personEntity.id = classId
     personEntity.name = name
    
     //2.通过指定实体名 得到对象实例
     let Entity = NSEntityDescription.entity(forEntityName: "Person", in: context)
     let classEntity = NSManagedObject(entity: Entity!, insertInto: context)
     classEntity.setValue(classId, forKey: "id")
     classEntity.setValue(name, forKey: "name")
    
     //保存实体对象
     do {
         try context.save()
     } catch  {
         let nserror = error as NSError
         fatalError("错误:\(nserror),\(nserror.userInfo)")
     }
     
     //获取Model缓存文件路径
     print(NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.applicationSupportDirectory, FileManager.SearchPathDomainMask.userDomainMask, true) )
     }
    
  4. 使用NavicatPremium工具通过路径查看数据模型

NavicatPremium工具:传送门
在这里插入图片描述

Arduino ESP32S3 基础入门教学大纲 ESP32环境、Arduino 阅读详情

相关推荐

LaTeX双栏浮动结构实战:用dblfloatfix解决跨栏图表排版难题

本文深入探讨了LaTeX双栏浮动结构在学术论文排版中的常见问题,特别是IEEE会议论文中的跨栏图表定位难题。通过介绍dblfloatfix包的整合解决方案,帮助用户实现精准的底部定位和浮动顺序保持,提升排版效率与质量。

weixin_30872499的博客 442

CoreData-实现数据永久性保存时遇到的问题

在使用coredata 的时候,需要永久性保存数据, 使用 NSManagedObjectContext 的 sava: 方法来实现。 在这个过程中发现各种不能保存,于是乎花了两天的时候来解决它,搜寻各种办法,不过找到的办法无数却始终解决不了我的问题,最后发现了我的问题所在,却让我哭笑不得。 总结在保存的时候遇到问题的解决办法: 1、使用了多个线程操作同一个 NSMa

服务器端攻城师 1712

nature子刊:MCNN基于电池故障诊断的模型约束的深度学习方法

本研究提出了一种基于模型约束神经网络(MCNN)的锂离子电池在线故障诊断方法,整合物理模型与深度学习,有效解决了随机工况下传统方法诊断精度低、依赖故障样本等问题。通过统计修正电池包模型和双向LSTM网络,实现了电池状态的高精度预测(平均RMSE 3.9%),并设计模型耦合自动编码器提取可解释特征。在包含18.2百万条真实车辆数据的验证中,该方法故障检测TPR在FPR=0.1时达85%,较基准方法提升超46.5%,且能提前30分钟预警内部短路等故障。研究还展示了算法在跨电池包结构迁移中的优越性,为工业应用提供

hasakie的博客 1757

移动端对大批量图片加载的优化方法(一)

创建自定义的ImageVIew的子类,在layoutSubviews方法中检查图片是否可见,只有在图片即将显示时调用setImage方法。对于更复杂的用例,可以实现自己的缓存策略;考虑使用键值存储(如UserDefaults或CoreData)或第三方缓存库(Haneke或Flare)。// 配置Flare// 使用Flare加载图片并缓存print("加载图片失败: \(error.localizedDescription)")

Kevin写代码 2381

华为eNSP与VMware虚拟机联动实战:从零搭建仿真网络环境

本文详细介绍了如何从零开始搭建华为eNSP与VMware虚拟机的联动仿真网络环境。通过环境准备、网络适配器配置、eNSP与VMware网络集成、安全策略与NAT配置等步骤,帮助读者掌握构建企业级网络实验场景的关键技术。这种组合特别适合网络工程师进阶训练和华为认证考试准备,实现低成本、高灵活性的网络仿真实验。

weixin_30415113的博客 502

西门子PLC新手必看:200SMART与1200/1500的MODBUS RTU通讯实战(附完整配置流程)

本文详细解析了西门子PLC中S7-200 SMART与S7-1200/1500之间实现MODBUS RTU通讯的完整实战流程。内容涵盖硬件接线、软件配置及程序编写,重点讲解了200SMART作为从站、1200/1500作为主站的典型架构,并提供了关键功能块的使用方法和常见问题排查技巧,帮助新手快速打通不同系列PLC间的数据交换。

weixin_29214559的博客 393

一行代码解决CoreData托管对象属性变更在SwiftUI中无动画效果的问题

在本篇博文中,我们仅用一行代码就解决了CoreData托管对象属性变更无法触发SwiftUI视图动画的问题;我们还顺便介绍了如何快速查看Xcode自动生成CoreData托管类的定义文件。

享受开发,颠倒银河 652

Copula函数实战:如何用MATLAB计算气象干旱与农业干旱的联合概率?

本文提供了一份基于MATLAB的Copula函数实战指南,详细阐述了如何利用该多变量联合分布函数计算气象干旱与农业干旱的联合概率及条件概率。通过从数据预处理、边缘分布拟合到Copula模型选择与检验的完整流程,帮助环境科学与农业气象研究者量化干旱事件的关联风险,为风险评估提供定量依据。

weixin_29213655的博客 429

CoreData处理大量数据

随着iOS8和OSX10.10的发布,Core Data也迎来了更新。这次的更新可谓是重量级的,它使得程序员能够更加直接高效的操作数据库,在处理大量数据时速度明显提升(这在以前不知有多少程序员因为Core Data批量更新数据效率之低而不得不放弃使用它)。Batch Updates可用于批量快速更新数据,Asynchronous Fetching可用于异步抓取海量数据,并可以通过NSProgres

say__ever的专栏 3149

反应动力学仿真软件:Kintecus_(11).数据输入与输出解析

在反应动力学仿真软件的二次开发中,数据输入与输出解析是至关重要的步骤。正确地解析输入数据和生成输出结果不仅能够确保仿真过程的顺利进行,还可以提高仿真的准确性和效率。本节将详细介绍如何在仿真软件中实现数据输入与输出的解析,包括文件格式、数据结构、解析方法以及实际操作示例。

kkchenjj的博客 757

高级电机控制场景实例:基于Simulink的永磁同步电机基于Luenberger观测器的弱磁控制仿真

本文基于Simulink实现表贴式永磁同步电机(SPMSM)的Luenberger观测器弱磁控制仿真,通过构建“观测-弱磁-控制”协同逻辑,突破传统矢量控制的基速限制。利用线性化模型设计观测器实时估计电流与磁链,结合电压极限约束动态注入负d轴电流,实现转速扩展至12000rpm(4倍基速),弱磁区电流THD低于3%,动态响应时间小于5ms,验证了高速运行下系统稳定性与鲁棒性。附完整建模步骤、MATLAB函数代码及性能分析,适用于电动汽车、机床等高速驱动场景,为高级电机控制提供可复现的技术范式。

amy_mhd的博客 31

解决coredata多次使用后内存上涨问题

对coredata不太熟,发现项目中的coredata多次使用后(几千次写入),内存飞涨。排查后,终于找到原因。     原因是:在查询后生成的NSManageObject一定要删除或者使用Context.refreshObject(obj, mergeChanges: false)释放内存。

yvhkyiu的专栏 779

【WorkBuddy专栏40】从「帮你干活」到「帮你创造」——WorkBuddy设计创意功能深度拆解

【WorkBuddy专栏40】从「帮你干活」到「帮你创造」——WorkBuddy设计创意功能深度拆解

AI人人懂 1293

iOS XML JSON SQLite CoreData 数据持久化

iOSXMLJSONSQLiteCoreData 一、文件操作      1、因为应用是在沙盒(Sandbox)中的,在文件读写权限上受到限制,只能在几个目录下读写文件:           * Documents:应用中用户数据可以放在这里,iTunes备份和恢复的时候会包括此目录           * tmp:存放临时文件,iTunes不会备份和恢复此目录,此目录下文件可能会在应

LDM 1468

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

iOS 通过CoreData实现数据持久化

iOS 通过CoreData实现数据持久化引言: Core Data 是 iOS 3.0 以后引入的数据持久化解决方案,其原理是对 SQLite 的封装,是开发者不需要接触 SQL 语句,就可以对数据库进行的操作. 其编码方式和原理结构方面较为特殊,本博文主要介绍在使用 Core Data 时遇到的各种问题以及对其核心原理进行解释. 参考资料: 1: iOS 教程:Co

zhaoguodongios的专栏 876

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

CoreData进行数据持久化存储

一、CoreData简介 1、CoreData是IOS5后出现的一个数据持久化存储框架,它提供了对象-关系映射(ORM)的功能,即能够将对象转化成数据,也能够将保存在数据库中的数据还原成对象。 2、虽然底层也是类似SQL的技术实现,但是不需要编写任何的SQL语句,有点像java中的hibernate持久化框架 3、CoreData数据的最终存储类型可以是SQLite数据库,XML,二

PGAndroid的博客 484

iPhone开发【二十六】数据持久化总结之第5篇—CoreData技术

转载请注明出处,原文网址:http://blog.youkuaiyun.com/m_changgong/article/details/8435094 作者:张燕广 实现的功能:1)演示使用CoreData持久化数据(仅显示基本操作,不包括很多复杂的操作)。 关键词:数据持久化 CoreData 1、新建一空工程,命名为:Persistence_CoreData: 2、选中“Use C

长弓的专栏 7950

CoreData数据持久化

CoreData介绍 CoreData是一门功能强大的数据持久化技术,位于SQLite数据库之上,它避免了SQL的复杂性,能让我们以更自然的方式与数据库进行交互。CoreData提供数据–OC对象映射关系来实现数据与对象管理,这样无需任何SQL语句就能操作他们。 CoreData数据持久化框架是Cocoa API的一部分,⾸次在iOS5 版本的系统中出现,它允许按照实体-属性-值模型组织数

super_man_ww的博客 4020

数据持久化-CoreData、SQLite、FMDB

1.CoreData 1.1 CoreData概述 1)Core data 是数据持久存储的最佳方式 2)Core Data 基于model-view-controller(mvc)模式下,为创建分解的cocoa应用程序提供了一个灵活和强大的数据模型框架。 3)Core Data可以是你以图形界面的方式快速的定义app的数据模型,同时在你的代码中容易获取到它。 Co

火海夕 2084

CoreData之数据持久化-01

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

weixin_34107739的博客 86

CoreData数据持久化实现收藏功能

主要实现的功能 :底部有两个标签控制器 点击第一个标签控制器的单元格 第二个控制器里就有相应的数据 实现数据持久化收藏功能 第一步:首先创建两个标签控制器 #import “oneViewController.h” #import “ViewController.h” #import “twoViewController.h” @interface oneViewController () @...

weixin_43455462的博客 250

iOS ---- 高级数据持久化CoreData

一 CoreData数据库框架的历史 CoreData数据持久化框架是Cocoa API的一部’,首次在iOS3.0版本的系统中出现,它允许按照实体 — 属性 — 值模型组织数据, 并以XML,二进制文件或者SQLite数据文件的格式持久化数据. 二 CoreData数据库框架的常用类 实体管理类: NSManagedObject 实体描述类: NSEntityDescription

Going@Hanna.Never give up 1409

3分钟完成首次艾尔登法环存档编辑:ER-Save-Editor完全指南

ER-Save-Editor 是一款开源的艾尔登法环存档编辑器,同时兼容 PC 与 PlayStation 存档。你可以用图形界面调整角色属性、批量添加装备、管理进度标志,适合想自定义角色 build 的玩家,也适合想学习存档二进制格式的开发者。 ## 什么人需要它 - **想自定义 build 的玩家**:不用在游戏里反复刷,直接把想要的武器、防具、护符加进存档。 - **PS 玩家**:把

gitblog_00504的博客 619

数据持久化(五)之CoreData

@http://www.cocoachina.com/iphonedev/sdk/2010/1126/2397.html 这是官方对于CoreData的说明

iOS界@迷糊小书童 3004

Part 10:iOS的数据持久化(2),Sqlite,CoreData

代码】Part10iOS的数据持久化(2),Sqlite,CoreData。

实际工作与学习当中的随记 206

iOS之数据持久化进阶(plist、SQLite、CoreData)

持久化方式就是数据存储方式.iOS支持本地存储和云端存储,而本地存储主要涉及如下三种机制: 属性列表:集合对象可以读写到属性列表中; SQLite数据库:SQLite是一个开源嵌入式关系型数据库; CoreData:是一种对象关系映射技术(ORM),本质上也是通过SQLite存储. 属性列表文件一般用于存储少量数据,Foundation框架中的集合对象都有对应的方法读写属性列表文件了;SQLit...

面壁者LOGIC 1066
上一篇: iOS审核用户隐私政策
下一篇: iOS封装CoreData+HandyJson实现本地缓存
LuodeCoding
博客等级 码龄10年 0粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值