在我的应用程序中,我应该分析一个对象,然后这样做:
if ([object_selected isKindOfClass:[Person class]]) {
Persone *obj = (Persone*)object_selected;
NSString *name = obj.nome;
NSString *surname = obj.surname;
}
else if ([object_selected isKindOfClass:[Animal class]]) {
Animal *obj = (Animal*)object_selected;
NSString *name = obj.nome;
NSString *breed = obj.breed;
}
这样我应该验证我的对象是否属于一个类来获取它的属性,但是有没有更快的方法从我的对象中获取属性“名称”? 所有对象都有“名称”属性。
谢谢
最佳答案
上述代码有一个共同的问题:每当缺少 name 属性时,它就会转储核心。这是我的版本,它更安全,而且是单行代码:
id name = ([object respondsToSelector:@selector(name)]) ? [object name] : nil;
希望三元运算符没有让您失望。如果名称不存在,则 nil 可以替换为适当的任何内容,例如:
static NSDictionary *defaultNameForClasses = @{@"FooClass": @"Foo", /* ... */};
// ...
id name = ([object respondsToSelector:@selector(name)]) ? [object name] : defaultNameForClasses[NSStringFromClass([object class])];
关于IOS:识别通用对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16957640/