zoukankan      html  css  js  c++  java
  • 本地数据持久化

    沙盒特点:安全性比较高,数据不易丢失,常用于存储用户信息,在开发中做一些数据的缓存功能,通常也将数据存入本地沙盒目录中

    获取沙盒路径:

     1、NSArray *array =   NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *DocumentFilePath = [array lastObject];

    2、NSString *sendBoxPath = NSHomeDirectory();

    往沙盒里面写入文件

    //1.首先要创建一个写入文件的路径,比如我们创建一个student.txt文件,放到沙盒中,首先第一步就是先创建路径之后,在通过方法将student.txt写入到创建的路径中,系统会自动生成文

     //2.创建student.txt文件路径,实际就是在document路径后面拼接一个路径

        //拼接document路径在拼接自定义的路径,系统会自动生成新的路径,拼接路径在代码里就是拼接字符串,拼接字符串的方法就是系统指定的方法

            //参数1.你需要拼接的文件夹名或者文件名(最常用的拼接路径方法)

        NSString *studentFilePath = [DocumentFilePath stringByAppendingPathComponent:@"student.txt"];

        //拼接路径的方法2

        NSString *studentFilePath2 = [DocumentFilePath stringByAppendingPathExtension:@"student.xml"];

         //拼接路径方法3

        NSString *studentFilePath3 = [DocumentFilePath stringByAppendingString:@"student.plist"];

      向文件中写入字符串

     BOOL result =  [nameStr writeToFile:studentFilePath atomically:YES encoding:NSUTF8StringEncoding error:nil];

        if (result) {

            NSLog(@"写入成功");

        } else    {

            NSLog(@"写入失败"); }

    向student.xml写入数组

    NSString *xmlFilePath = [DocumentFilePath stringByAppendingPathComponent:@"student.xml"];

        NSArray *xmlArray = [NSArray arrayWithObjects:@"内容一",@"内容二",@"内容三", nil];

     BOOL resultXml = [xmlArray writeToFile:xmlFilePath atomically:YES];

          if (resultXml) {

            NSLog(@"resultXml写入数组成功"); 

      }  else{

            NSLog(@"写入数组失败");

        }

    将字典写入student.plist文件中

     NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithObject:@"姓名" forKey:@"name"];

      BOOL dicResult = [dic writeToFile:studentFilePath3 atomically:YES];

        if (dicResult) {

          NSLog(@"字典写入成功");

        }  else  {

            NSLog(@"字典写入失败");

        }

      //取出本地student.plist文件中的数据

        NSMutableDictionary *myDic = [NSMutableDictionary dictionaryWithContentsOfFile:studentFilePath3];

        NSLog(@"myDic = %@", myDic);

     

    归档,反归档(存model文件)

      //所谓归档,其实就是将特殊类型,如model类,存入本地文件中

      //所谓反归档,其实就是将model对象从本地文件中取出来

    归档第一步:新建model类,

    归档第二部:实现NSCoding协议

    归档第三步:实现协议方法,对属性进行编码操作

    - (void)encodeWithCoder:(NSCoder *)aCoder

    {

        //其实编码操作就是对属性进行赋值

        [aCoder encodeObject:self.name forKey:@"name"];

        [aCoder encodeObject:self.gender forKey:@"gender"];

        [aCoder encodeInteger:self.age forKey:@"age"];

     }

    归档第四步:实现协议方法,对属性进行解码操作

    - (id)initWithCoder:(NSCoder *)aDecoder

    {

        //解码相当于取值

        self = [super init];

        if (self) {

            self.name = [aDecoder decodeObjectForKey:@"name"];

            self.gender = [aDecoder decodeObjectForKey:@"gender"];

            self.age = [aDecoder decodeIntegerForKey:@"age"];

            }

        return self;

    }

    归档第五步:归档,将model对象写入本地文件

    Studnet *student = [[Studnet alloc] init];

        student.name = @"姓名";

        student.gender = @"女";

        student.age = 18;

        NSString *wangboFilePath = [DocumentFilePath stringByAppendingPathComponent:@"wangbo.abc"];

        //进行归档操作,就是将model对象存入本地文件中

        [NSKeyedArchiver archiveRootObject:student toFile:wangboFilePath];

           //反归档操作,就是从本地文件中取出model对象

        Studnet *wangbo2 = [NSKeyedUnarchiver unarchiveObjectWithFile:wangboFilePath];

        NSLog(@"name = %@, gender = %@, age = %ld", wangbo2.name, wangbo2.gender, wangbo2.age);

     

     

  • 相关阅读:
    【CoreData】多个数据库使用
    栅格那点儿事(四B)---多波段栅格数据的显示
    栅格那点儿事(四A)---栅格的显示与渲染
    栅格那点儿事(三)---关于压缩
    栅格那点儿事(二)---细看Raster属性
    栅格那点儿事(一)---Raster是个啥子东西
    栅格那点儿事(零)
    ArcMap如何修改地图坐标系统
    ArcGIS中利用ArcMap将地理坐标系转换成投影坐标系(从WKID=4326到WKID=102100)
    什么是TOPO学
  • 原文地址:https://www.cnblogs.com/xiaolingling1126/p/5082342.html
Copyright © 2011-2022 走看看