Iphone 从实例获取类的名称

Iphone 从实例获取类的名称,iphone,objective-c,class,instance,classname,Iphone,Objective C,Class,Instance,Classname,我有以下问题:我得到一个传递的类的实例,并且想知道这个实例的类的名称。如何获取此信息?NSStringFromClass([instance class])应该可以做到这一点。如果您只想测试一个对象,看看它是否是某个类的类型 BOOL test = [self isKindOfClass:[SomeClass class]]; 从班级内部 -(NSString *) className { return NSStringFromClass([self class]); } 若您正在研

我有以下问题:我得到一个传递的类的实例,并且想知道这个实例的类的名称。如何获取此信息?

NSStringFromClass([instance class])
应该可以做到这一点。

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

BOOL test = [self isKindOfClass:[SomeClass class]];

从班级内部

-(NSString *) className
{
    return NSStringFromClass([self class]);
}

若您正在研究如何在Swift中获取类名,那个么可以使用reflect来获取有关对象的信息

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

OBJC:

NSStringFromClass([instance class])
SWIFT

从实例:

String(describing: YourType.self)
从类型:

String(describing: self)

投票赞成回答这个问题,这样谷歌人就可以得到答案,而不是预测需要。记住
#import
,以便能够在实例上调用类。也许改写你的问题或接受与问题匹配的答案?@Jasperblus:完成,甚至没有意识到这有多流行!绝对不想引起你的愤怒,但这是你个人资料中与iOS相关的第二个答案。我似乎只想补充一点,我们可以从实例的实现中将其称为“self”。你会为这一点辩护吗,因为这大大增加了三年前被接受的答案?@danh我知道你在追捕我。真为你高兴!对不起,我刚刚点击了这个,并讨论了是否要说些什么。我只是想做一些温柔的嘲弄,但我知道在这种半匿名的环境下,脾气会很快变得暴躁。谢谢你的好意。(事实上,+1表示练习封装)。这只会给答案增加麻烦。应该将其设置为类方法,或者只是
self。dynamicType
如果在Swift类上调用,则返回一个命名空间的类名。