zoukankan      html  css  js  c++  java
  • iOS开发-本地存储(偏好设置,Plist,归档)

    1.   NSUserDefaults

        //TODO: 1.NSUserDefaults    NSUserDefaults类除了可以存储数组、字典、NSdata外,还可以直接存储OC基本类型属性。但是不能直接作用到自定义对象.
        [[NSUserDefaults standardUserDefaults] setObject:@"" forKey:@""];//设置初始值
        [[NSUserDefaults standardUserDefaults] synchronize];//进行同步
        
        [[NSUserDefaults standardUserDefaults] objectForKey:@""];//取值

    2.    Plist

        //TODO: 2.Plist文件
        //1.根据已有plist文件取值
        NSString *pathString = [[NSBundle mainBundle] pathForResource:@"Property List" ofType:@"plist"];
        //如果plist文件是一个NSArray,用数组取
        NSArray *array = [NSArray arrayWithContentsOfFile:pathString];
        //如果plist文件是一个NSDictionary,用字典取
        NSDictionary *dictionary = [NSDictionary dictionaryWithContentsOfFile:pathString];
        //2.创建plist文件
        NSArray *homeDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentString = homeDirectory[0];
        NSString *documentPath = [documentString stringByAppendingPathComponent:@"GCD.plist"];
        NSFileManager *fileManager = [NSFileManager defaultManager];
        [fileManager createFileAtPath:documentPath contents:nil attributes:nil];
        
        NSArray *fileArray = @[@{@"name":@"one"},@{@"name":@"two"}];
        [fileArray writeToFile:documentPath atomically:YES];//写入数据
        
        NSArray *readArray = [NSArray arrayWithContentsOfFile:documentPath];//读取数据

    3.  归档、解档

        //TODO: 3.归档/解档
        archiveModel *model = [[archiveModel alloc]init];
        model.name = @"小明";
        model.age = @"18";
        model.sex = @"";
    
        NSArray *pathArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *filePath = [pathArray[0] stringByAppendingPathComponent:@"model"];
        
        /*
        一.只归档一个对象
        
        [NSKeyedArchiver archiveRootObject:model toFile:filePath];
        */
        
        /*
         一.只解档一个对象
         if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
         //路径存在
         archiveModel *readModel = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
         NSLog(@"解档:%@",readModel);
         }
         */
        
        
        //二.归档多个对象
        NSMutableData *data = [[NSMutableData alloc]init];
        NSKeyedArchiver *keyedArchiver = [[NSKeyedArchiver alloc]initForWritingWithMutableData:data];
        [keyedArchiver encodeObject:model forKey:@"model"];
        //[keyedArchiver encodeObject:model forKey:@"key1"];
        //[keyedArchiver encodeObject:model forKey:@"key2"];
        [keyedArchiver finishEncoding];
    
        if ([data writeToFile:filePath atomically:YES]) {
            NSLog(@"归档成功");
        }
        
        
        //二.解档多个对象
        if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
            NSData *data = [NSData dataWithContentsOfFile:filePath];
            NSKeyedUnarchiver *keyedUnarchive = [[NSKeyedUnarchiver alloc]initForReadingWithData:data];
            archiveModel *readModel = [keyedUnarchive decodeObjectForKey:@"model"];
            //archiveModel *readModel = [keyedUnarchive decodeObjectForKey:@"key1"];
            //archiveModel *readModel = [keyedUnarchive decodeObjectForKey:@"key2"];
            [keyedUnarchive finishDecoding];
    
        }
  • 相关阅读:
    navigateTo防止多次跳转
    vue中的绑定class和微信小程序中的绑定class的区别
    js同步和异步
    本地存储和vuex使用对比
    微信小程序页面跳转区别总结
    CAS-技术专区-认证服务器cas-server搭建
    CAS-技术专区-SSO配置完整案例(静态认证+数据库认证)
    SpringCloud-技术专区-实战案例-Zuul整合OAuth2.0认证服务
    OAuth2.0协议专区-SpringCloud安全-集成OAuth2实现身份认证和单点登录
    OAuth2.0协议专区-SpringCloud微服务实战-基于OAUTH2.0统一认证授权的微服务基础架构
  • 原文地址:https://www.cnblogs.com/lfyDragon/p/9798028.html
Copyright © 2011-2022 走看看