Appkit Cocoa:NSCoding解码报错NSCocoaErrorDomain 4864问题排查
问题原因与解决方案
错误码NSCocoaErrorDomain - code: 4864表示解档时类验证不通过。你使用unarchivedObjectOfClass:[NSArray class]解档时,仅告知系统允许解档NSArray类,但数组内的Grade对象未被加入允许的类列表,导致系统拒绝完成解档操作。
修复方法
改用unarchivedObjectOfClasses:fromData:error:方法,传入包含NSArray和Grade的类集合,明确告知系统这两类均允许解档:
NSError *error = nil; NSSet *allowedClasses = [NSSet setWithObjects:[NSArray class], [Grade class], nil]; NSArray *arrayFromData = [NSKeyedUnarchiver unarchivedObjectOfClasses:allowedClasses fromData:data error:&error];
额外注意点
你归档代码里的数组类型声明写的是NSArray<Grades*>,但你的类名实际是Grade,这是笔误,建议修正为NSArray<Grade*>以避免类型警告。
内容的提问来源于stack exchange,提问作者IRP_HANDLER
相关产品推荐
相关产品推荐

