从实例获取类的名称

我有以下问题: 我得到一个类的实例传递,并想知道这个实例的类的名称。怎么弄到这个?

70904 次浏览

NSStringFromClass([instance class])应该可以。

如果您想要做的只是测试一个对象,看看它是否是某个类的类型

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 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 文件中。

目标:

NSStringFromClass([instance class])

SWIFT

例如:

String(describing: YourType.self)

类型:

String(describing: self)