数据持久化,也就是把数据保存到磁盘,之后能够再读取出来使用(也能够再次更改或删除)。不少场景须要数据持久化,好比为了减轻服务器的访问与存储压力,客户端须要在本地作一些数据持久化的工做。git
iOS的数据持久化,有几种方式,包括:自定义格式的文件、plist、CoreData、FMDB等等。github
这里记录基于CoreData的开源项目MagicalRecord的使用。通过封装,magicalrecord已经不须要接触到sql语句的编写。sql
小程仍是使用cocoapods来安装,只须要在Podfile中增长:数据库
pod 'MagicalRecord'xcode
pod 'MagicalRecord/CocoaLumberjack'服务器
而后在Podfile所在目录,执行命令pod install便可安装。安装完毕,在目标项目,能够看到magicalrecord的影子:app
magicalrecord的读写操做,使用上依赖于context,至关于先在context上操做,以后才持久化(这一步不须要读者考虑)。iphone
context的获取与建立有一系列的函数,其中,[NSManagedObjectContext MR_defaultContext]取得默认的context,只能使用于主线程;而其它context可使用于非主线程,好比:[NSManagedObjectContext MR_context]。函数
在使用上,若是在主线程操做,甚至能够忽略对context的使用。ui
另外,须要注意,使用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搜索“觅知音”或“天涯何处”,下载安装。