微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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. }

    版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

    相关推荐