我有NSMutableArray,其中包含不同类的不同对象。现在我想获取类名,相关内容,并检查相应的对象是否为NSString。我应该怎么做呢?
我正在尝试以下内容。它当然不起作用。
for(NSString *string in array){
NSLog(@"Name of the class : %@", [NSString stringWithCString:class_getName(Class id)];
答案 0 :(得分:6)
如果您使用的是Mac OS X,则可以使用[object className],它会返回NSString
for(id obj in array) NSLog(@"Name of the class: %@", [obj className]);
要检查它是否是NSString,您应该使用以下内容:
for(id obj in array) {
if ([obj isKindofClass:[NSString class]]) {
// do something
}
}
答案 1 :(得分:6)
for(id object in array){
NSLog(@"Name of the class: %@", [object className]);
NSLog(@"Object is a string: %d", [object isKindOfClass:[NSString class]]);
}
答案 2 :(得分:1)
我有NSMutableArray,其中包含不同类的不同对象。现在我想得到班级名称&相关的东西&还要检查相应的对象是否为NSString。
坚持。为什么首先要有一系列不同类型的对象?您可以重做您的设计以避免陷入这种情况吗?
正如其他人所说,-isKindOfClass:有效。一个缺点是它通常导致脆弱的代码。在这里你的循环需要知道数组中可能存在的所有类。有时这是你能做的最好的事情。
使用-respondsToSelector的设计:往往更健壮一点。在这里你的循环需要知道它依赖于数组中的类的行为。