iOS中的数据持久化<数据库另外详细介绍>

1.偏好设置

- (void)Preference{
    /*
    偏好设置是用来专门用来保存引用程序的配置信息的,一般不要在偏好设置中保存其他数据.
    如果没有调用synchonize方法,系统会根据I/O情况不定时刻第保存到文件中,所以如果需要立即写入文件的,就必须立刻调用synchonize
    偏好设置会将所有数据保存到同一个文件中,即preference目录下的一个,以此应用宝命来命名的plist文件
     */
    // 1.获取NSUserdefault文件
    NSUserDefaults *userdefults = [NSUserDefaults standardUserDefaults];
    // 2.向文静中写入内容
    [userdefults setObject:@"AAA" forKey:@"a"];
    NSDictionary *dic = @{@"123":@"123"};
    [userdefults setObject:dic forKey:@"dic"];
    // 2.1 立即同步
    [userdefults synchronize];
    // 3.读取文件
    NSString *name = [userdefults objectForKey:@"a"];
    NSLog(@"name --%@",name);
    NSLog(@"dic---%@",[userdefults objectForKey:@"dic"]);
}

// 2 .plist

 /*
     NSDictionary
     NSMutableData
     NSDate
     NSNumber
     NSArray
     NSString
     NSMutableArray
     等
     */
    // 1.获取文件路径
    NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject stringByAppendingPathComponent:@"ios.plist"];
//    NSArray *arr = @[@"1",@"2",@"3"];
//    [arr writeToFile:path atomically:YES];
//    // 2读取文件
//    NSArray *array = [NSArray arrayWithContentsOfFile:path];
//    NSLog(@"---%@",array);
//
//    atomically表示是否需要写入一个辅助文件,再把辅助文件拷贝到目标文件地址,一般设置为yes
    NSDictionary *dic = @{@"1":@"2"};
    [dic writeToFile:path atomically:YES];
    
    NSDictionary *dic1 = [NSDictionary dictionaryWithContentsOfFile:path];
    NSLog(@"--%@",dic1);

// 3 归档解档

- (void)NSKeyedArchiver{
    // 需要把对象归档是调用,NSKeyedArchiver的工厂方法archiveRootObject:toFile:方法
    NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject stringByAppendingPathComponent:@"Person.haha"];//保存文件的扩展名可以随便写
    Person * p = [[Person alloc] init];
    p.name = @"123";
    [NSKeyedArchiver archiveRootObject:p toFile:path];
    
    // 读取 :需要把对象归档是调用,NSKeyedUnarchiver 的工厂方法unarchiveObjectWithFile方法
    Person *ps = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
    if (ps) {
        NSLog(@"----%@",ps.name);
    }
    // 注意
    //必须遵循并实现NSCoding协议
    //保存文件的扩展名可以随便写
    //继承是必须先调用父类的归档结档方法
    
}

// 还有就是数据库.以后有空详细介绍,以前也写过一篇关于fmdb的文章(swift的对fmdb的第二次封装)

你可能感兴趣的:(iOS中的数据持久化<数据库另外详细介绍>)