Получение имени класса из экземпляра - PullRequest
134 голосов
/ 07 февраля 2010

У меня следующая проблема: я получил экземпляр класса и хочу узнать имя класса этого экземпляра. Как это получить?

Ответы [ 7 ]

371 голосов
/ 07 февраля 2010

NSStringFromClass([instance class]) должен сделать трюк.

28 голосов
/ 07 февраля 2010

, если все, что вы хотите сделать, это протестировать объект, чтобы увидеть, является ли он типом определенного класса

BOOL test = [self isKindOfClass:[SomeClass class]];
17 голосов
/ 13 июля 2014

Из самого класса

-(NSString *) className
{
    return NSStringFromClass([self class]);
}
2 голосов
/ 21 мая 2016

Просто добавьте категорию:

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.

1 голос
/ 05 декабря 2018

ObjC:

NSStringFromClass([instance class])

SWIFT

Из экземпляра:

String(describing: YourType.self)

Из типа:

String(describing: self)
1 голос
/ 07 января 2016

Вы также можете использовать [[self class] description]

0 голосов
/ 08 февраля 2015

Если вы смотрите, как получить имя класса в Swift, вы можете использовать отражение, чтобы получить информацию об объекте.

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