• iOS常用的存储方式


    在iOS App开发过程中经常需要操作一些需要持续性保留的数据,比如用户对于App的相关设置、需要在本地缓存的数据等等。本文针对OC中经常使用的一下存储方式做了个整理。

        常用的存储工具/方式:  

        NSUserDefaults类

        Plist文件 

        解归档

        手动存放沙盒

    // sqlite

        CoreData 

        第三方数据存储框架

    1. NSUserDefaults

        一般对于一些基本的用户设置,因为数据量很小,我们可以使用OC语言中的 NSUserDefaults类来进行处理。使用方法很简单,只需要调用类中的方法即可:

    复制代码
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    复制代码

          NSUserDefaults类除了可以存储数组、字典、NSdata外,还可以直接存储OC基本类型属性。但是不能直接作用到自定义对象,如果是自定义对象需要进行归档操作,这里后面会讲到。

    2. Plist文件

        Plist文件作为Xcode的一种资源包,也可以作为一种存储工具。

        1.在项目中创建Plist文件。 在项目中创建的好处是文件的可视化,我们可以很直观的看到文件的内容,同时Xcode还提供了直接操作文件的功能。便于我们对文件内容的增删改查。这种方式的缺点是项目中的plist文件一般作为固态的数据形势保存,对于经常需要改动的数据就不好操作了。

     

      获取文件中的数据代码

    复制代码


    复制代码

        

     2.代码读写Plist文件。避免了在项目中创建Plist文件导致不便更改的麻烦。

    复制代码
    
    
    复制代码

    3.解归档

          之前说了,不管是NSUserDefaults 或者是 plist 都不能对自定义的对象进行存储,OC提供了解归档恰好解决这个问题。 解归档针对的是一个对象,假设我们现在有一个TestModel的类,需要进行归档和接档,上代码。

    对象的.h文件

    复制代码
    
    
    复制代码

    对象的.m文件

    复制代码


    复制代码

        接下来只要使用解/归档辅助类就可以TestModel类进行解归档

    复制代码
    
    
    复制代码

        运行代码之后  打印

     

    4.手动存放沙盒

          iphone沙箱模型的有四个文件夹,分别是documents,tmp,app,Library。
        1、Documents 目录:您应该将所有的应用程序数据文件写入到这个目录下。这个目录用于存储用户数据或其它应该定期备份的信息。为了不让App的备份过于庞大,我们不建议在这里存放大容量的文件。
        2、AppName.app 目录:这是应用程序的程序包目录,包含应用程序的本身。由于应用程序必须经过签名,所以您在运行时不能对这个目录中的内容进行修改,否则可能会使应用程序无法启动。
        3、Library 目录:这个目录下有两个子目录:Caches 和 Preferences
             Preferences 目录:包含应用程序的偏好设置文件。您不应该直接创建偏好设置文件,而是应该使用NSUserDefaults类来取得和设置应用程序的偏好.
             Caches 目录:用于存放应用程序专用的支持文件,保存应用程序再次启动过程中需要的信息。细心的话你会发现几乎所有的第三方框架的缓存信息处理都在这个文件中,一般的大容量文件都放在这里。
       4、tmp 目录:这个目录用于存放临时文件,保存应用程序再次启动过程中不需要的信息。Nsuserdefaults保存的文件一般在tmp文件夹里。
       获取这些目录路径的方法:
       1,获取家目录路径的函数:

     

       2,获取Documents目录路径的方法:

     

       3,获取Caches目录路径的方法:

     

       4,获取tmp目录路径的方法:

     

     沙盒中只能保存OC中的基本数据,自定义的对象不能直接存入。 存入方式如下。

    复制代码
    
    
    复制代码

      打印如图:

     

  • 相关阅读:
    [转]Annotation手册
    [转]十款非主流操作系统介绍
    关于构造函数及游离块的顺序
    如何申请Google地图API Key
    “请求响应”模式和“事件驱动”模式
    【引用】Linux中硬链接和软链接的区别和联系
    [转]Java代码的静态编译和动态编译中的问题比较
    [转]Java中常用设计模式总结
    GIS名词解释
    [转]比较JSF、Spring MVC、Stripes、Struts2、Tapestry、Wicket
  • 原文地址:https://www.cnblogs.com/striveLD/p/10235418.html
Copyright © 2020-2023  润新知