美文网首页
iOS持久化方式有哪些

iOS持久化方式有哪些

作者: 崔盛希 | 来源:发表于2018-06-01 15:06 被阅读35次

    首先这里的持久化指的是数据持久化,目前客户端的持久化也只有这一个含义。
    为何要持久化:iOS开发可以没有持久化,持久化更多的是业务需求;比如记录用户是否登陆,下次进应用不需要再登陆。
    因为iOS的沙盒机制,所以持久化分为两类:沙盒内和沙盒外。

    沙盒内
    NSKeyedArchiver
    只要遵循了NSCoding协议并正确实现了initWithCoder和encodeWithCoder方法的类都可以通过NSKeyedArchiver来序列化。
    归档使用archiveRootObject,解归档使用unarchiveObjectWithFile;需要指定文件路径。

    NSUserDefaults
    [NSUserDefaults standardUserDefaults]获取NSUserDefaults对象,以key-value方式进行持久化操作。

    plist
    写入使用writeToFile,读取使用xxxWithContentsOfFile;需要指定文件路径。

    数据库
    数据库无疑是大量数据最好的持久化方案,数据库目前有:sqlite、CoreData和Realm等。这里就不用回答FMDB它只是封装了sqlite而已。

    文件
    这里要和plist区分一下,plist方式是字典/数组数据格式写入文件;而这里的文件方式不限数据格式。

    沙盒外
    KeyChain
    沙盒内的方式在应用被删除后数据都会丢失,如果想要不丢失则需要使用KeyChain。
    KeyChain本质是一个sqlite数据库,其保存的所有数据都是加密过的。
    KeyChain分为私有和公有,公有则需要指定group,一个group中的应用可以共享此KeyChain。
    使用KeyChain过程中要理解下面几个问题:

    1:自己使用的KeyChain和系统自带的KeyChain数据是隔离的,内部应该是不同数据库文件;
    2:KeyChain数据可备份到iCloud中;
    3:不需要联网,也不用登陆iCloud账号;一个设备一个sqlite数据库,但是不同应用组不共享数据;
    4:要在另一台设备上使用当前设备存储的KeyChain信息,需要当前设备进行数据备份,
    再在另一设备上复原数据;比较常用的是iCloud备份方式;
    5:系统自带的KeyChain中账号密码分类数据可在系统设置->账号与密码里面看到,
    你退出iCloud账号还是存在,只是iCloud会帮你备份如果你设置了的话;这个和照片是一样的道理。

    相关文章

      网友评论

          本文标题:iOS持久化方式有哪些

          本文链接:https://www.haomeiwen.com/subject/ekhksftx.html