【发布时间】:2011-01-14 02:59:24
【问题描述】:
我有以下问题:我得到了一个类的实例,想知道这个实例的类名。这个怎么弄?
【问题讨论】:
-
也许改写您的问题或接受与问题匹配的答案?
-
@JasperBlues:完成,甚至没有意识到这有多受欢迎!
标签: iphone objective-c class instance classname
我有以下问题:我得到了一个类的实例,想知道这个实例的类名。这个怎么弄?
【问题讨论】:
标签: iphone objective-c class instance classname
NSStringFromClass([instance class]) 应该可以解决问题。
【讨论】:
#import <objc/objc-runtime.h>才能在实例上调用类。
如果你只想测试一个对象,看看它是否是某个类的类型
BOOL test = [self isKindOfClass:[SomeClass class]];
【讨论】:
从类本身
-(NSString *) className
{
return NSStringFromClass([self class]);
}
【讨论】:
如果您正在查看如何在 Swift 中获取类名,您可以使用反射来获取有关对象的信息。
let tokens = split(reflect(self).summary, { $0 == "." })
if let typeName = tokens.last {
println(typeName)
}
【讨论】:
self.dynamicType
你也可以使用[[self class] description]
【讨论】:
只需添加一个类别:
NSObject+Extensions.h
- (NSString *)className;
NSObject+Extensions.m
- (NSString *)className {
return NSStringFromClass(self.class);
}
然后使用以下代码:
NSString *className = [[SomeObject new] className];
甚至:
NSString *className = SomeObject.new.className;
要在任何地方使用它,请将类别添加到 YourProject.pch 文件。
【讨论】:
OBJC:
NSStringFromClass([instance class])
SWIFT
来自实例:
String(describing: YourType.self)
来自类型:
String(describing: self)
【讨论】: