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 に答える
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 に答える