使用序列化和反序列化函数archivedDataWithRootObject和unarchivedObjectOfClasses的使用和遇到问题及解决方案

文章讲述了在iOS开发中使用NSKeyedArchiver进行序列化和反序列化时遇到的问题,包括`archiveRootObject:toFile:`和`unarchiveObjectWithFile:`被弃用,以及替换为`archivedDataWithRootObject:requiringSecureCoding:error:`和`unarchivedObjectOfClass:fromData:error:`后出现的错误。问题主要集中在类未遵循NSSecureCoding协议和处理空数组的序列化。通过遵循NSSecureCoding协议和正确处理序列化对象的属性,最终解决了序列化和反序列化失败的问题。

为何archiveRootObject和unarchiveObjectWithFile正常,而archivedDataWithRootObject和unarchivedObjectOfClasses一直报错。
[NSKeyedArchiver archiveRootObject:account toFile:path];和`c
PPAccountModel *account = [NSKeyedUnarchiver unarchiveObjectWithFile:path];


```c
'archiveRootObject:toFile:' is deprecated: first deprecated in iOS 12.0 - Use +archivedDataWithRootObject:requiringSecureCoding:error: and -writeToURL:options:error: instead
'unarchiveObjectWithFile:' is deprecated: first deprecated in iOS 12.0 - Use +unarchivedObjectOfClass:fromData:error: instead

替换很简单,但是会一堆问题等着你解决,序列化和反序列全失败。
先说能简单解决的序列化(归档):

    NSString *path = [self PathWithFileName:@"啊啊啊.data"];//拓展名可以自己随便取
    DYGlobleData.token = @"";
    PPAccountModel *account = nil;
//    [NSKeyedArchiver archiveRootObject:account toFile:path];
    NSError *error = nil;
    NSData *archiveData = [NSKeyedArchiver archivedDataWithRootObject:account requiringSecureCoding:YES error:&error];
    if (archiveData == nil || error) {
   
   
        NSLog(@"归档失败:%@", error);
    }
    BOOL isSuccess = [archiveData wri
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值