关于iphone:从实例获取类的名称

Getting name of the class from an instance

我有以下问题:我通过了一个类的实例,想要知道这个实例的类的名称。怎么弄到这个?


NSStringFromClass([instance class])这样的戏法。


如果你想看到的是,如果它的测试面向对象的类类型的确定

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


在类本身中

1
2
3
4
-(NSString *) className
{
    return NSStringFromClass([self class]);
}


只是添加类别:

1
2
3
4
5
6
7
NSObject+Extensions.h
- (NSString *)className;

NSObject+Extensions.m
- (NSString *)className {
    return NSStringFromClass(self.class);
}

然后使用下面的代码:

1
NSString *className = [[SomeObject new] className];

或盈亏平衡点:

1
NSString *className = SomeObject.new.className;

使用它的任何地方yourproject.pch添加到类文件。


objc:

1
NSStringFromClass([instance class])

斯威夫特

从实例:

1
String(describing: YourType.self)

从类型:

1
String(describing: self)

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


如果你是在寻找如何让你可以使用classname迅速获得信息关于对象的反映。

1
2
3
4
let tokens = split(reflect(self).summary, { $0 =="." })
if let typeName = tokens.last {
    println(typeName)
}