次の問題があります。クラスのインスタンスが渡され、このインスタンスのクラスの名前を知りたいです。これを入手するには?
NSStringFromClass([instance class])
はトリックを行う必要があります。
オブジェクトをテストして特定のクラスのタイプであるかどうかを確認するだけの場合
BOOL test = [self isKindOfClass:[SomeClass class]];
クラス自体の中から
-(NSString *) className
{
return NSStringFromClass([self class]);
}
カテゴリを追加するだけです:
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ファイルに追加します。
[[self class] description]
を使用することもできます
OBJC:
NSStringFromClass([instance class])
スイフト
インスタンスから:
String(describing: YourType.self)
タイプから:
String(describing: self)
Swiftでクラス名を取得する方法を探している場合は、reflectを使用してオブジェクトに関する情報を取得できます。
let tokens = split(reflect(self).summary, { $0 == "." })
if let typeName = tokens.last {
println(typeName)
}