归档与解档的注意点

1.归档时的路径不能越级存放,原因是归档时不会将路径过程中没有的文件夹创建出来。
正确的写法:
// 存储上传文件信息的路径(caches)
#define UploadCachesDirectory [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject]stringByAppendingPathComponent:@"UploadCache.data”]

[NSKeyedArchiver archiveRootObject:documentUploadFileModel toFile:UploadCachesDirectory];

 

错误的写法:
// 缓存主目录
#define ZFCachesDirectory [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory
NSUserDomainMask, YES) firstObject]stringByAppendingPathComponent:@"ZFCache”]

#define UploadCaches [ZFCachesDirectory stringByAppendingPathComponent:@"uploadCaches.data”]

[NSKeyedArchiver archiveRootObject:documentUploadFileModel toFile:UploadCaches];

 

2.对同一个数据,多处进行解档和归档操作,处理不当很容易造成,类似于多线程访问同一数据而引起的混乱。

解决方案:
前提-左边为长循环,右边为突发事件。
关键-其实,如果右边的归档发生在左边的归档之后,就不会发生混乱。因此,要解决的就是,突发事件的归档已经完成,当时左边归档的对象竟然还是之前解档时获得的最初值。
策略-在左边进行归档操作前,将右边突发事件的修改值,放在左边的归档前。比如,假如下面代码:
//归档前,需要
DocumentUploadFileModel *tempUploadFileModel = [NSKeyedUnarchiver unarchiveObjectWithFile:UploadCachesDirectory];
documentUploadFileModel.uploadPause = tempUploadFileModel.uploadPause;

 

 

 

posted @ 2018-04-03 23:46  码出境界  阅读(576)  评论(0编辑  收藏  举报