NSString 与 Class/Protocol/SEL 相互转化

Posted Nelsen_Chen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NSString 与 Class/Protocol/SEL 相互转化相关的知识,希望对你有一定的参考价值。

//NSString 与 Class 相互转化

Class NSClassFromString (NSString *aClassName);

NSString * NSStringFromClass (Class aClass);

 

//NSString 与 Protocol 相互转化

NSString * NSStringFromProtocol (Protocol *proto);

Protocol *NSProtocolFromString (NSString *namestr);

 

 

//NSString 与 SEL 相互转化

NSString *NSStringFromSelector (SEL aSelector);

SEL NSSelectorFromString (NSString *aSelectorName);

 

 

我曾经遇到过,在一个页面中可以有9个选择去push 出不同的页面。这样的情况下,如果每个控制器的 push 我都要按照如下代码来写,这岂不是要累死自己, 所以我找了找一个简单的方法。

RegisterViewController *registerVC = [[RegisterViewController alloc] init];
[self.navigationController pushViewController:registerVC animated:YES];

就是利用了NSString 与 Class 的转化:

//将所有控制器类的字符串放入数组 array中
NSArray *arry = [NSArray arrayWithObjects:@"WantToLoanViewController",@"WantToSaleBusinessViewController",@"GetBusinessEverydayViewController",@"LoanGroupViewController",@"PledgeGroupViewController",@"CooperationViewController",@"ReconmmendForMeViewController",@"ActivityAnnouncementsViewController",@"ContactUsViewController", nil];
//取对应类名
NSString *className = [array objectAtIndex:indexPath.row];
Class Representative = NSClassFromString(className);
//创建 Controller 并 push
UIViewController *VC = [[Representative alloc] init];
[self.navigationController pushViewController:VC animated:YES];  



转载自:http://blog.csdn.net/wangyanchang21/article/details/50732572

 

以上是关于NSString 与 Class/Protocol/SEL 相互转化的主要内容,如果未能解决你的问题,请参考以下文章

NSCoding 与对象内的 NSString

OBC: NSString 与 NSArray 互转

NSPredicate 与 NSString 发生奇怪的崩溃

iOS NSString 与NSData转化

OC基础--常用类的初步介绍与简单实用之NSString

NSDate与 NSString long long类型的相互转化