• iOS学习之应用数据存储1-属性列表、偏好设置、NSKeyedArchiver归档


    iOS应用数据存储的常用方式(持久化方式)

    1. 属性列表(plist)归档(XML文件)
    2. Preference(偏好设置)
    3. NSKeyedArchiver归档(NSCoding)
    4. SQLite3
    5. Core Data
      1. 属性列表(plist)归档(XML文件)
    6. 属性列表是一种XML格式的文件,拓展名为plist。
    7. 如果对象是NSString、NSDictionary、NSArray、NSData、NSNumber等类型,就可以使用writeToFile:atomically:方法直接将对象写到属性列表文件中。

    将一个NSDictionary对象归档到一个plist属性列表中

    // 将数据封装成字典

    NSMutableDictionary *dict = [NSMutableDictionary dictionary];

    [dict setObject:@"阿三" forKey:@"name"];

    [dict setObject:@"18959222222" forKey:@"phone"];

    [dict setObject:@"20" forKey:@"age"];

    1. 将字典持久化到Documents/stu.plist文件中(写入)[dict writeToFile:path atomically:YES];

    成功写入到Documents目录下

    2.读取字典属性列表路径的两种方法:

    1).构造函数:

    dict=[NSMutableDictionary alloc]initWithContentsOfFile: path];

    2).静态创建工厂方法:

    dict=[NSMutableDictionary dictionaryWithContentsOfFile: path];

    读取数据

    NSLog(@"name:%@", [dict objectForKey:@"name"]);

    NSLog(@"phone:%@", [dict objectForKey:@"phone"]);

    NSLog(@"age:%@", [dict objectForKey:@"age"]);

      1. Preference(偏好设置)

    1iOS应用都可以通过偏好设置来快速保存用户登陆账号,密码和登陆状态等等信息。

    2、苹果提供了一个NSUserDefaults实例,通过它来存取偏好设置。保存格式为plist文件格式。

    3、使用偏好设置来保存数据, 默认存储在Preferences的文件夹下,偏好设置数据会将所有的数据都保存到Preferences的文件夹下的同一个plist文件中。

    4、使用偏好设置对数据进行保存, 它保存的时间是不确定的,会在将来某一时间自动将数据保存到Preferences文件夹下,如果需要即刻将数据存储,使用[defaults synchronize]

    1.保存偏好设置数据

    // 获取NSUserDefaults对象

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    // 保存数据[defaults setObject:@" 阿三" forKey:@" name "];

    [defaults setInteger:23 forKey:@" age"];

        [defaults setDouble:1.73f forKey:@"height"];

    // 强制让数据立刻保存[defaults synchronize]; 

    2.读取偏好设置数据

    // 获取NSUserDefaults对象

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    // 读取数据

    NSString *test = [defaults objectForKey:@" name "];

      NSInteger age=[defaults integerForKey:@"age"];

        double height=[defaults doubleForKey:@"height"];

      1. NSKeydeArchiver归档
    1. 保存在Document文件夹
    2. 前面两种方式只能保存plist支持的基本数据类型,那么要保存自定义的类对象,苹果提供了NSKeydeArchiver归档。
    3. 使用NSKeydeArchiver归档必须使被归档的类遵守NSCoding协议并且实现协议方法。

    @interface Person : NSObject <NSCoding>

    // 当一个对象要保存到文件中的时候回调用如下方法,所以重写该方法,说明保存该对象的时候要保存哪些属性。

    - (void)encodeWithCoder:(NSCoder *)aCoder {

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

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

    [aCoder encodeDouble:self.height forKey:@"height"];

    }

    // 当一个对象从文件中读取的时候,系统会调用该方法,重写该方法

    - (nullable instancetype)initWithCoder:(NSCoder *)aDecoder {

    if ([super init]) {

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

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

    self.height = [aDecoder decodeDoubleForKey:@"height"];

    }

    return self;

    }

    //将自定义的对象保存到文件中

    [NSKeyedArchiver archiveRootObject:p1 toFile:path];

    // 读取数据

    Person *p2 =[NSKeyedUnarchiver unarchiveObjectWithFile:path];

    通过NSKeydeArchiver保存的数据的文件后缀名可以任意命名,并且通过plist保存的数据是直接显示出来的,不安全。通过归档方法保存的数据在文件中打开是编码,更安

     

  • 相关阅读:
    servlet中如何实现通过Spring实现对象的注入
    异步Socket
    JAVA NIO实现
    【Java并发】
    JAVA实现阻塞队列
    lock与synchronized比较
    线程执行顺序
    ConcurrentHashMap 1.8
    LeetCode 416 分割等和子集
    linux常用指令
  • 原文地址:https://www.cnblogs.com/bzhong/p/5947175.html
Copyright © 2020-2023  润新知