我想使用NSClassFromString()将字符串传递给,以便确定将哪个类推送到导航控制器上。问题是,我想将一个值传递给此类,这会导致错误,并且由于NSObject不是UIViewController类型的类,因此尝试推送视图控制器也会导致错误。
Class screenClass = NSClassFromString(screen.name);
NSObject* newClass = [[screenClass alloc] init];
newClass.asset = asset; // Causes errors because asset not in NSObject
[self.navigationController pushViewController:newClass animated:YES];// newClass is an NSObject
[newClass release];
有没有更好的方法来做我在这里尝试的事情?
最佳答案
如果无法静态键入变量,则不能使用点表示法。如果所有可能的类均来自声明该方法的一个公共类,则可以将其静态键入为该类。否则,您需要对asset
属性使用accessor方法:
Class screenClass = NSClassFromString(screen.name);
id newClass = [[screenClass alloc] init]; // note that it's an id to indicate that we don't know what it'll be more specifically than an object
[newClass setAsset:asset];
[self.navigationController pushViewController:newClass animated:YES];
[newClass release];
这假定
asset
属性的设置器是setAsset:
(通常是)。关于iphone - Objective-C:NSClassFromString()与导航 Controller 一起使用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7143379/