Objective c 对象在存档/取消存档后具有不同的类

Objective c 对象在存档/取消存档后具有不同的类,objective-c,ios,Objective C,Ios,我正在为一个使用iOS 6的iPad项目开发Objective-C代码库 将类“ClassA”的名称重构为“ClassB”后,我发现以下测试失败: NSData *encodedObject = [NSKeyedArchiver archivedDataWithRootObject:objectOfClassB]; ServiceOrderOld *decodedObject = [NSKeyedUnarchiver unarchiveObjectWithData:encodedObject];

我正在为一个使用iOS 6的iPad项目开发Objective-C代码库

将类“ClassA”的名称重构为“ClassB”后,我发现以下测试失败:

NSData *encodedObject = [NSKeyedArchiver archivedDataWithRootObject:objectOfClassB];
ServiceOrderOld *decodedObject = [NSKeyedUnarchiver unarchiveObjectWithData:encodedObject];

[[[decodedObject class] should] equal:[objectOfClassB class]];
我收到的错误消息是:“[FAILED],预期服从相等的ClassB,得到ClassB”


是什么导致了这种奇怪的行为?关于调试的任何提示?

类似乎与归档机制无关。你有没有试着在你没有存档的时候重播这个课程

DesiredClass *object = (DesiredClass*) [NSKeyedUnarchiver
   unarchiveObjectWithData:encodedObject];
我希望我不会太晚;)

我在测试一个框架时遇到了同样的问题。 事实证明,该类问题也在测试的目标中。我认为它与框架的类不匹配(但编译!)。
我将该类从测试目标中移除,测试通过。

问题是该类有一个
isEqual
方法,其中包含一个类比较:if(!other | |![other iskindof class:[self class]])返回NO;这一点现在正在失败。此外,我很好奇这怎么可能。对象怎么可能有相同的类名但有不同的类?我不认为这是个问题。它与归档无关。我也看到了这一点,但只有当类与正在执行的代码位于单独的静态归档中时。这说明了你的情况吗?你有没有想过解决这个问题的办法?已经有一段时间了,但如果我没记错的话,这确实是个问题。