使用字符串的值来强制转换对象

时间:2012-04-29 17:37:47

标签: objective-c cocoa-touch casting

我必须将一个对象转换为包含在字符串中的类型,我不知道它是否可能。

我的班级是一个字符串:

NSString *myClass = @"User";

我有一个我想用这种类型转换的对象。

object = (myClass)object; // Doesn't work
object = (myClass *)object; // Doesn't work

我该怎么做?

1 个答案:

答案 0 :(得分:4)

没有必要这样做 - 对象的静态类型只在编译时被检查,这只能在运行时发生,即使有办法(因为字符串之类的对象直到运行时才存在) )。

如果你试图将对象从一个类更改为另一个类,那么无论如何都无法工作 - 从一个指针类型转换到另一个指针类型只是编译器关于它指向哪种类型的数据,它不是实际上改变了数据。为了将对象从一种类型转换为另一种类型,必须有一个方法或函数从旧对象获取数据并创建所需类型的新对象(例如NSString的dataUsingEncoding:以从NSString转换为NSData的)。

但是如果你有一个动态选择的类,并且你需要某种类型来为该类的实例提供变量,你可以使用id(如果所有可能的类都响应相同的消息,可能会使用协议)。