zoukankan      html  css  js  c++  java
  • ios开发之---将数据写入和读取与沙盒的具体理解和实现。

    一、将Documents文件夹下文件的写入和读取

     A:文件的存储:

        // 1、获取“沙盒”路径 (文件夹路径)

        // 方法的意思:SearchPath 搜索路径。ForDirectories 哪个文件夹 InDomains 在哪个范围。  合起来就是:搜索在指定范围内的哪个文件夹路径。

        // 三个参数的意思:1、哪个文件夹。2、指定的搜索范围。3、是否展开路径。

        // 返回值是一个数组。

        NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];

        // 2、根据文件名,拼接文件路径。

        NSString *filePath = [path stringByAppendingPathComponent:@"fusen.data"];

        

        // 3、将数据写入到指定的文件路径下的文件里面。

        NSArray *arr = @[@"1",@"2"];

        [arr writeToFile:filePath atomically:YES];

    B:文件的读取:以什么方式存,就以什么方式读。

       // 1、获取“沙盒”路径 (文件夹路径)

        NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];

        // 2、根据文件名,拼接文件路径。

        NSString *filePath = [path stringByAppendingPathComponent:@"fusen.data"];

        NSArray *arr = [NSArray arrayWithContentsOfFile:filePath];

    二、偏好设置存储:(NSUserDefaults)的存储和读取

    A:存储:

    特点:1、不需要关心文件件。2、NSUserDefaults专门用来做偏好设置存储。3、底层是封装了一个字典。

        NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];

        [userDefault setObject:@"fs" forKey:@"name"];

        [userDefault setObject:@"24" forKey:@"age"];

            // 同步,把缓存里的偏好设置文件写入硬盘。ios8之前必须要同步。ios8以后可写,可不写

        [userDefault synchronize];

     B:读取:

    NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];

      NSString *name = [userDefault objectForKey:@"name"];

     NSString *age = [userDefault objectForKey:@"age"];

    通过以上代码就可获取到保存到偏好设置里的信息。

     三、自定义对象归档、解档

    因为自定义对象,不能用plist存储,也不能用偏好设置,所以自定义对象,一般是用归档来存储。比如:用户信息:userInfo.一般是归档。

    1、自定义对象要遵守  <NSCoding>  协议。

    2、在自定义对象的.m文件中,实现协议方法。

    // 自定义对象 归档

    - (void)encodeWithCoder:(NSCoder *)aCoder

    {

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

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

    }

     // 自定义对相 解档

    - (id)initWithCoder:(NSCoder *)aDecoder

    {

        if (self = [super init]) {

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

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

        }

        return self;

    }

    3、实现归档

         // 1、获取文件夹路径。

        NSString *tmpDir = NSTemporaryDirectory();

            // 2、拼接文件路径

        NSString *filePath = [tmpDir stringByAppendingPathComponent:@"user.info"];

        // 3、给模型属性赋值。

        Account *account = [[Account alloc] init];

        account.name = @"张三";

        account.pwd = @"123";

        // 4、实现自定义对象归档

        [NSKeyedArchiver archiveRootObject:account toFile:filePath];

    4、实现解档。

     // 1、获取文件夹路径。

        NSString *tmpDir = NSTemporaryDirectory();

        // 2、拼接文件路径

        NSString *filePath = [tmpDir stringByAppendingPathComponent:@"user.info"];

        // 3、解档。

    Account *account = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];

     

  • 相关阅读:
    Nhibernate1
    控制反转(IoC)
    Windbg是windows平台上强大的调试器
    Java 7 语法新特性
    区间数据计算
    红黑树数据结构剖析
    .net下灰度模式图像
    如何配置Hyper-V的虚拟机通过主机网络上网 (NAT)
    产品落地
    poj-3898 Software Industry Revolution DP
  • 原文地址:https://www.cnblogs.com/fs-ios/p/4707720.html
Copyright © 2011-2022 走看看