147

我有以下问题:我得到了一个通过的类的实例,想知道这个实例的类的名称。如何得到这个?

4

7 回答 7

407

NSStringFromClass([instance class])应该做的伎俩。

于 2010-02-07T17:33:17.840 回答
31

如果您只想测试一个对象以查看它是否是某个类的类型

BOOL test = [self isKindOfClass:[SomeClass class]];
于 2010-02-07T17:39:53.763 回答
17

从班级本身内部

-(NSString *) className
{
    return NSStringFromClass([self class]);
}
于 2014-07-13T05:42:51.803 回答
3

对象:

NSStringFromClass([instance class])

迅速

从实例:

String(describing: YourType.self)

从类型:

String(describing: self)
于 2018-12-05T06:14:21.493 回答
2

只需添加一个类别:

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

于 2016-05-21T07:20:41.580 回答
1

你也可以使用[[self class] description]

于 2016-01-07T16:59:42.550 回答
0

如果您正在查看如何在 Swift 中获取类名,您可以使用反射来获取有关对象的信息。

let tokens = split(reflect(self).summary, { $0 == "." })
if let typeName = tokens.last {
    println(typeName)
}
于 2015-02-08T10:37:29.493 回答