zoukankan      html  css  js  c++  java
  • 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搜索“觅知音”或“天涯何处”,下载安装。

  • 相关阅读:
    [转]Hamcrest使用方法实例
    Maven配置浅析
    Guava API
    awk排序作业
    [转]awk使用手册
    Vue源码探究-全局API
    vue 组件间传值
    在2018年如何优雅的开发一个typescript语言的npm包?
    PHP四种序列化方案
    从 0 到 1 再到 100, 搭建、编写、构建一个前端项目
  • 原文地址:https://www.cnblogs.com/jonlan/p/10031034.html
Copyright © 2011-2022 走看看