如何取消归档未知对象?

时间:2014-08-19 09:05:58

标签: objective-c ipad ios7 nskeyedunarchiver

我基于2个对象类(classAclassB)创建了两个iPad应用程序。

我在classA的文件中序列化NSKeyedArchiver(然后附加到电子邮件中)。 我想取消归档使用classA的其他应用中的classB对象,而不包括其他应用的所有标头。

问题: 当我使用NSKeyedUnarchiver从iPad文件系统(来自邮件附件)加载对象时,该函数返回错误("类无法识别")。

我尝试了什么: 这些子弹都不适合我...... a)检查类类型(作为字符串)并转换objectA。 b)在另一个应用程序中包含objectA的.h定义。

问题: 有没有办法将对象解压缩为通用ID对象? 然后设置参数调用,例如:

[genericObjectA setName:@"new name"];
[genericObjectA execute];

鉴于我知道函数的名称和要设置的参数的名称?

1 个答案:

答案 0 :(得分:0)

使用KVO,您可以设置值:

[genericObjectA setValue:@"new name" forKey:@"name"];

然后调用方法,使用它的选择器:

SEL newSelector = NSSelectorFromString(@"execute");
if ([genericObjectA respondsToSelector:newSelector])
    [genericObjectA performSelector:@selector(newSelector)];