ios数据初级持久化 存储复杂对象
来源:互联网 发布:手机打网络电话软件 编辑:程序博客网 时间:2024/06/05 12:03
1.如何创建文件夹 管理文件夹 需要使用 NSFileManager 这个单例类
// withIntermediateDirectories 如果填YES,如果创建的文件已经存在,可以将其覆盖,反之文件创建失败 BOOL isCreated = [[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil];
移动文件夹的方法, 参数是两个路径 ,将就路径中的文件夹移到新路径中
BOOL isMoved = [[NSFileManager defaultManager] moveItemAtPath:oldPath toPath:newPath error:nil];
复制文件夹
BOOL isCopy = [[NSFileManager defaultManager] copyItemAtPath:oldPath toPath:newPath error:nil];
删除文件夹
BOOL isDelete = [[NSFileManager defaultManager] removeItemAtPath:newPath error:nil];
判断文件夹是否存在
BOOL isExist = [[NSFileManager defaultManager] isExecutableFileAtPath:oldPath];
复杂对象初始化需要遵守一个协议 <NSCoding>
然后实现协议中的方法
// 对复杂对象进行持久化 叫做归档与反归档(编码与解码)// 反归档方法- (id)initWithCoder:(NSCoder *)aDecoder{ self = [super init]; if (self) { // 解码的过程 // 注意编码时的Key要和解码的Key一样 self.name = [aDecoder decodeObjectForKey:@"name"]; self.age = [aDecoder decodeIntegerForKey:@"age"]; self.data = [aDecoder decodeObjectForKey:@"data"]; } return self;}// 归档方法 编码成可以持久化的格式- (void)encodeWithCoder:(NSCoder *)aCoder{ // 对每一个属性 都进行重新编码 // 注意属性类型 [aCoder encodeObject:self.name forKey:@"name"]; [aCoder encodeInteger:self.age forKey:@"age"]; [aCoder encodeObject:self.data forKey:@"data"];}
// 归档复杂对象- (void)archiver{ // 归档前要初始化对象 JJModel *model = [[JJModel alloc] init]; // 赋值 model.name = @"JJ"; model.age = 23; // 弄一张图片给图片 model.data = UIImagePNGRepresentation([UIImage imageNamed:@"河图"]); // 创建一个归档对象 NSMutableData *data = [NSMutableData data]; NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; // 进行编码归档 [archiver encodeObject:model forKey:@"JJModel"]; // 编码完成 [archiver finishEncoding]; // NSLog(@"%@", data); // 实际上把编码完的对象保存到data中 // 把data 写入文件, 就算完成了持久化 // 写好路径, 调写入方法 NSString *oldPath = [NSString stringWithFormat:@"%@/JJModel.da", kDocumentPath]; [data writeToFile:oldPath atomically:YES]; [model release]; [archiver release];}// 反归档(解码)- (void)unArchiver{ NSString *oldPath = [NSString stringWithFormat:@"%@/JJModel.da", kDocumentPath]; // 获取刚才归档的data NSData *data = [NSData dataWithContentsOfFile:oldPath]; NSKeyedUnarchiver *unArchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data]; // 进行解码 返回一个对象 key 一定要和 编码时的key 一样 JJModel *model = [unArchiver decodeObjectForKey:@"JJModel"]; // 反归档完成 [unArchiver finishDecoding]; [unArchiver release]; // UIImage *image = [UIImage imageWithData:model.data]; NSLog(@"%@", model);}
0 0
- ios数据初级持久化 存储复杂对象
- iOS编程------初级数据持久化/沙盒机制/NSFileManager/简单对象写入文件/复杂对象写入文件
- iOS-初级数据持久化
- iOS 初级数据持久化
- ios 数据持久化初级
- iOS-初级数据持久化
- 初级数据持久化(本地存储)
- iOS UI 17 初级数据持久化
- iOS - 数据持久化 - 文件的写入(简单对象和复杂对象)
- ios 数据持久化存储
- iOS数据持久化存储
- iOS 数据持久化存储
- iOS开发11-iOS 数据持久化(简单、复杂对象的读写)
- iOS经典讲解之复杂对象的数据持久化-归档与反归档
- 初级数据持久化
- 初级数据持久化
- 初级数据持久化
- 初级数据持久化
- Android之Fragment(碎片)
- UE4 Material - How To Use Fresnel in your Materials
- /proc/modules, /proc/devices, /dev
- 1215 七夕节
- android之音频的播放和录制(MediaPlayer,SoundPool,MediaRecorder)
- ios数据初级持久化 存储复杂对象
- Java初体验(二)
- 全球顶级域名及国家域名列表
- C++Primer第五版 7.2.1节练习
- xutilsdb
- XAMPP如何修改默认的网站目录htdocs方法详解
- JSP之Session生命周期
- 安卓虚拟摇杆
- iOS——越狱与免证书调试