回答:
NSStringFromClass([instance class])
トリックを行う必要があります。
#import <objc/objc-runtime.h>
インスタンスのクラスを呼び出せることを忘れないでください。
クラス自体から
-(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ファイルにカテゴリを追加します。
Swiftでクラス名を取得する方法を探している場合は、reflectを使用してオブジェクトに関する情報を取得できます。
let tokens = split(reflect(self).summary, { $0 == "." })
if let typeName = tokens.last {
println(typeName)
}
self.dynamicType