美文网首页我收录的代码iOS FoundationsiOS开发之技能点
iOS基础--数据本地化-归解档-整理总结(2)

iOS基础--数据本地化-归解档-整理总结(2)

作者: 云之君兮鹏 | 来源:发表于2016-06-25 11:22 被阅读445次
    雁过也,正伤心!却是旧时相识!<可达鸭>

    iOS数据持久化方法:

    1. 属性列表 (plist文件), 用 NSUserDefault
    1. 归档 (NSKeyedArchiver) (本质上还是WriteToFile 归解档是一种编码方式)
    2. 数据库 (SQlite, CoreData, FMDB(第三方));
    • 归档: 将复杂对象转化成 NSData 类型对象数据 (复杂--> 归档 --> NSData --> writeToFile)
      注意: 归档是将对象转化为数据字节,以文件的形式存在磁盘上.
    • 反归档(解档): 读取文件将 NSData 类型数据转化为复杂对象 (读取数据 --> NSData -->反归档 -- 复杂对象)

    <big>归档的方式:</big>

    1: 对Foundation框架中的对象进行归档
    2: 对自定义的对象进行归档
    3: 对自定义的内容进行归档

    • 注意: 归档生成的文档是加密的不可解的

    Foundation框架中对象:
    归档:

    // 1: 创建路径
    NSString *DocumentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, 4) objectAtIndex:0];
    NSString *filrPath = [DocumentsPath stringByAppendingString:@"/file.txt"];
    // 2: 归档
    NSArray *arr = @[@"iOS",@"UI",@"OC",@"C"];
    BOOL result = [NSKeyedArchiver archiveRootObject:arr toFile:filrPath];
    if (result)
    {
    NSLog(@"归档成功****%@",filrPath);
    }
    // 3: 不需要结束归档```

    // 反归档:

    NSArray newArr = [NSKeyedUnarchiver unarchiveObjectWithFile:filrPath];
    NSLog(@"newArr
    **%@",newArr);```


    自定义内容:

    // 归档:

    // 1: 获取路径
    NSString *rootPath = NSHomeDirectory();
    rootPath = [rootPath stringByAppendingString:@"/customFile.txt"];
    // 2: 使用Data对象存放归档数据
    NSMutableData *oldData = [NSMutableData data];
    // 3: 创建归档工具
    NSKeyedArchiver *aa = [[NSKeyedArchiver alloc] initForWritingWithMutableData:oldData];
    // 4: 对自定义内容归档
    [aa encodeObject:@"小皇帝詹姆斯" forKey:@"name"];
    [aa encodeObject:@"闪电侠
    韦德" forKey:@"wife"];
    [aa encodeObject:@[@"保罗",@"安东尼"] forKey:@"team"];
    // 5: 完成归档
    [aa finishEncoding];
    // 6: 写入
    if ([oldData writeToFile:rootPath atomically:1])
    {
    NSLog(@"成功******%@",rootPath);
    }

    //反归档
    >```code
        // 1: 读取文件 并转化成NSData类型
        NSData *dataNew = [NSData dataWithContentsOfFile:rootPath];
        // 2: 根据dataNew创建反归档对象
        NSKeyedUnarchiver *bb = [[NSKeyedUnarchiver alloc] initForReadingWithData:dataNew];
        // 3: 反归档
        NSString *str1 = [bb decodeObjectForKey:@"name"];
        NSString *str2 = [bb decodeObjectForKey:@"wife"];
        NSArray *str3 = [bb decodeObjectForKey:@"team"];
        NSLog(@"str1***%@***str*%@**str3*%@",str1,str2,str3);
        // 4:不用写结束归档
    
    自定义对象归解档

    相关文章

      网友评论

        本文标题:iOS基础--数据本地化-归解档-整理总结(2)

        本文链接:https://www.haomeiwen.com/subject/lrhadttx.html