Bry*_*n P 1 text objective-c uitextfield uitextview ios
我有一个由对象组成的字典UITextfield,UITextView并且UILabel它们都具有text属性.现在我需要在不使用丑陋方法的情况下实现这一点,这也是我目前的代码:
NSString *text = @"";
if ( [obj isKindOfClass:[UITextView class]] ) {
text = [(UITextView *)obj text];
}
else if ( [obj isKindOfClass:[UITextField class]] ) {
text = [(UITextField *)obj text];
}
else if ( [obj isKindOfClass:[UILabel class]] ) {
text = [(UILabel *)obj text];
}
[array addObject:text];
Run Code Online (Sandbox Code Playgroud)
有没有办法缩短它?
我相信你正在寻找respondsToSelector:
您所要做的就是根据是否有条件地设置变量,您的对象会响应选择器text.
NSString *text = nil;
if ([obj respondsToSelector:@selector(text)]) {
text = [obj text];
if (text) {
[array addObject:text];
}
}
Run Code Online (Sandbox Code Playgroud)
正如@Hemang所指出的,你可以在respondsToSelector:这里找到更多关于何时使用的信息:何时在objective-c中使用respondsToSelector