归档与解档的注意点

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;

 

 

 

转载于:https://www.cnblogs.com/cchHers/p/8711904.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值