4

iOS6を使用するiPadプロジェクトのObjective-Cコードベースに取り組んでいます。

クラス「ClassA」の名前を「ClassB」にリファクタリングした後、次のテストが失敗していることがわかりました。

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

[[[decodedObject class] should] equal:[objectOfClassB class]];

私が受け取るエラーメッセージは次のとおりです。「[FAILED]、ClassBと等しいと予想され、ClassBを取得しました」

この奇妙な行動の原因は何でしょうか?これをデバッグするためのヒントはありますか?

4

2 に答える 2

0

クラスはアーカイブメカニズムとはまったく関係がないようです。アーカイブを解除するときにクラスを再キャストしようとしましたか?

DesiredClass *object = (DesiredClass*) [NSKeyedUnarchiver
   unarchiveObjectWithData:encodedObject];
于 2012-10-24T06:59:05.733 に答える