0

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

我的课程在一个字符串中:

NSString *myClass = @"User";

我有一个我想用这种类型投射的对象。

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

我怎样才能做到这一点 ?

4

1 回答 1

4

这样做是没有意义的——对象的静态类型只在编译时被检查,而且这只能在运行时发生,即使有办法做到这一点(因为字符串等对象实际上直到运行时才存在)。

如果您试图将对象从一个类更改为另一个类,那无论如何都行不通——从一种指针类型转换为另一种指针类型只会让编译器知道它指向的数据类型,它实际上并没有改变数据。为了将对象从一种类型转换为另一种类型,必须有一种方法或函数从旧对象中获取数据并创建所需类型的新对象(例如dataUsingEncoding:从 NSString 转换为 NSData 的 NSString)。

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

于 2012-04-29T18:02:48.710 回答