是否可以解码包含未知对象的NSKeyedArchived集合

时间:2016-02-11 01:12:43

标签: ios nscoding nskeyedarchiver nskeyedunarchiver nssecurecoding

我有一组具有不同类A,B和C的对象(都共享一个共同的超类):

// Encoded collection
@[A, B, C]

此集合通过NSCoding进行存档和取消存档。 如果其中一个类已从项目中删除,有没有办法部分取消归档此集合?

似乎decodeObjectForKey:失败并在遇到无法解码的对象时返回nil个对象。有没有办法只获得能够解码的东西?我理解为什么这种行为对于一个对象有意义,但对于一个集合却没有意义。

// Expected decoding when A class definition is missing:
@[B, C]

// Actual:
nil

1 个答案:

答案 0 :(得分:1)

如果您想要使用的类名和类已知,那么您可以使用NSKeyedUnArchiver [unarchiver setClass:MySuperClass.class forClassName:@"C"]方法指定翻译,因此您可以使用{{1}之类的内容}