iOS开发简记(8):数据持久化
数据持久化,也就是把数据保存到磁盘,以后可以再读取出来使用(也可以再次更改或删除)。很多场景需要数据持久化,比如为了减轻服务器的访问与存储压力,客户端需要在本地做一些数据持久化的工作。
ios的数据持久化,有几种方式,包括:自定义格式的文件、plist、coredata、fmdb等等。
这里记录基于coredata的开源项目magicalrecord的使用。经过封装,magicalrecord已经不需要接触到sql语句的编写。
(1)安装
小程还是使用cocoapods来安装,只需要在podfile中增加:
pod 'magicalrecord'
pod 'magicalrecord/cocoalumberjack'
然后在podfile所在目录,执行命令pod install即可安装。安装完毕,在目标项目,可以看到magicalrecord的影子:
(2)使用
magicalrecord的读写操作,使用上依赖于context,相当于先在context上操作,之后才持久化(这一步不需要读者考虑)。
context的获取与创建有一系列的函数,其中,[nsmanagedobjectcontext mr_defaultcontext]取得默认的context,只能使用于主线程;而其它context可以使用于非主线程,比如:[nsmanagedobjectcontext mr_context]。
在使用上,如果在主线程操作,甚至可以忽略对context的使用。
另外,需要注意,使用magicalrecord需要创建数据模型,也就是创建表的结构。
举个例子。
小程需要一张记录点赞的语音的id的表,只有一个字段,存放语音的id。
先是使用magicalrecord进行数据库的初始化与清理:
然后,创建这张点赞表的数据模型,按下面的截图操作:
这时会生成新的数据模型的文件,使用时import进头文件,比如是这样的一个数据模型(实体类)声明:
注意,不知道是不是xcode10.0的问题,在编译的时候会提示错误,说有两个数据模型文件生成同样的.o,而除了新生成的文件,在这个目录还会自动生成数据模型文件:/users/username/library/developer/xcode/deriveddata/zhiyin-dhvbpzbqjhsnhucuczmcenxfdpqa/build/intermediates.noindex/zhiyin.build/debug-iphonesimulator/zhiyin.build/derivedsources/coredatagenerated,小程的解决办法是,把项目中新生成的文件移除掉(非删除),即可编译通过。
这里只创建了一个实体类,也就是一张表。如果想新建表,那就增加一个entity,指定属性(字段),再创建对应的实体类即可。
之后,就可以使用这个实体类来进行读写操作。
比如,读取所有记录:
比如,增加记录:
比如,删除记录:
注意,对于增加、删除或修改,都需要对context进行保存,并且在指定的context上进行操作,比如:
本文演示的app的源码:
https://github.com/crazy0363/sound-show-zhiyin
本app已上架appstore,欢迎您使用。地址:https://itunes.apple.com/cn/app/%e5%a4%a9%e6%b6%af%e4%bd%95%e5%a4%84%e8%a7%85%e7%9f%a5%e9%9f%b3/id1439297254?mt=8&from=groupmessage&isappinstalled=0
或在appstore搜索“觅知音”或“天涯何处”,下载安装。
上一篇: 单例模式的双重检测
下一篇: nagios监控服务器 安装配置方法
推荐阅读
-
iOS数据持久化——属性列表和归档
-
iOS开发简记(8):数据持久化
-
Nacos数据持久化不支持MySQL8.x高版本
-
vue开发--vue页面刷新state丢失,vuex数据持久化plugins
-
从零开始入门 K8s | 应用存储和持久化数据卷:存储快照与拓扑调度 crack工作阿里巴巴
-
Unity3D游戏开发数据持久化PlayerPrefs的用法详解
-
【Android企业级开发案例分享】仿西瓜视频主页面框架,自定义GridLayout条目长按拖拽换位,条目点击删除添加,GreenDao数据持久化,Tab标签顺序实时刷新,Tab标签选中自字体变大变色
-
从零开始入门 K8s | 应用存储和持久化数据卷:核心知识
-
从零开始入门 K8s | 应用存储和持久化数据卷:核心知识
-
从零开始入门 K8s | 应用存储和持久化数据卷:存储快照与拓扑调度