我收录的代码iOS FoundationsiOS开发之技能点

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

2016-06-25  本文已影响445人  云之君兮鹏
雁过也,正伤心!却是旧时相识!<可达鸭>

iOS数据持久化方法:

  1. 属性列表 (plist文件), 用 NSUserDefault
  1. 归档 (NSKeyedArchiver) (本质上还是WriteToFile 归解档是一种编码方式)
  2. 数据库 (SQlite, CoreData, FMDB(第三方));

<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:不用写结束归档
自定义对象归解档
上一篇下一篇

猜你喜欢

热点阅读