Swift研发中的数据缓存之一plist文件、NSUserDefault、Archiver

iOS研发中的数据存储包括以下几种方式:plist文件、NSUserDefault、Archiver、sqlite、CoreData。


1、plist文件


  1. funcsaveWithFile()
  2. {
  3. ///1、获得沙盒的根路径
  4. lethome=NSHomeDirectory()asNsstring;
  5. ///2、获得Documents路径,使用Nsstring对象的stringByAppendingPathComponent()方法拼接路径
  6. letdocPath=home.stringByAppendingPathComponent("Documents")asNsstring;
  7. ///3、获取文本文件路径
  8. letfilePath=docPath.stringByAppendingPathComponent("data.plist");
  9. vardataSource=NSMutableArray();
  10. dataSource.addobject("衣带渐宽终不悔");
  11. dataSource.addobject("为伊消得人憔悴");
  12. dataSource.addobject("故国不堪回首明月中");
  13. dataSource.addobject("人生若只如初见");
  14. dataSource.addobject("暮然回首,那人却在灯火阑珊处");
  15. //4、将数据写入文件
  16. dataSource.writetoFile(filePath,atomically:true);
  17. println("\(filePath)");
  18. }
    funcreadWithFile()
  1. letdataSource=NSArray(contentsOfFile:filePath);
  2. println("\(dataSource)");
  3. }

2、NSUserDefaults存储数据

    funcsaveWithNSUserDefaults()
  1. ///1、利用NSUserDefaults存储数据
  2. letdefaults=NSUserDefaults.standardUserDefaults();
  3. //2、存储数据
  4. defaults.setobject("衣带渐宽终不悔",0); background-color:inherit">forKey:"name");
  5. //3、同步数据
  6. defaults.synchronize();
  7. }
funcreadWithNSUserDefaults()
  • letdefaults=NSUserDefaults.standardUserDefaults();
  • letname=defaults.objectForKey("name")asNsstring;
  • println("\(name)");
  • }

  • 3、归档存储(对象需要实现NSCoding协议,归档对应encode,反归档对应decode)



      /**
    1. 归档数据
    2. 需要实现NSCoding协议
    3. */
    4. funcsaveWithNSKeyedArchiver()
    5. lethome=NSHomeDirectory()asNsstring;
    6. letfilePath=docPath.stringByAppendingPathComponent("book.data");
    7. letbook=CFAddressBook(name:"Francis",0); background-color:inherit">call:"199");
    8. /**
    9. *数据归档处理
    10. NSKeyedArchiver.archiveRootObject(book,0); background-color:inherit">toFile:filePath);
    11. }

      */
    1. funcreadWithNSKeyedUnarchiver()
    2. {
    3. letdocPath=home.stringByAppendingPathComponent("Documents")asNsstring;
    4. letfilePath=docPath.stringByAppendingPathComponent("book.data");
    5. letbook=NSKeyedUnarchiver.unarchiveObjectWithFile(filePath)asCFAddressBook;
    6. println("\(book.name),\(book.call)");
    7. }

    相关文章

    软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
    现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
    前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
    【Android App】实战项目之仿抖音的短视频分享App(附源码和...
    前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
    因为我既对接过session、cookie,也对接过JWT,今年因为工作...