[iphone] 인스턴스에서 클래스 이름 얻기

다음과 같은 문제가 있습니다. 클래스의 인스턴스가 전달되었고이 인스턴스의 클래스 이름을 알고 싶습니다. 이것을 얻는 방법?



답변

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)
}