2017-01-13 1 views
11

Swift에서 변수 유형을 어떻게 식별 할 수 있습니까? 예 : 내가 Swift에서 변수 유형을 알고 있습니다.

struct RandomStruct....

를 작성하는 경우 - 유형 나에게 struct하지 RandomStruct

를 제공해야합니다 아니면 내가 class RandomClass...를 작성하는 경우 유형은 class하지 RandomClass해야한다. 내가 Mirror.subjectTypetype(of:)하는 모두를 사용하여 시도

RandomStructRandomClass로 출력을 제공

+0

당신은 "유형"은 무엇을 의미하는지 오해. – Raphael

답변

9

당신은 Mirror의 사용에 가까웠다 : 당신이

struct Foo {} 
class Bar {} 

let foo = Foo() 
let bar = Bar() 

if let displayStyle = Mirror(reflecting: foo).displayStyle { 
    print(displayStyle) // struct 
} 

if let displayStyle = Mirror(reflecting: bar).displayStyle { 
    print(displayStyle) // class 
} 

그냥 .optional는 경우이므로주의하여 유형의 인스턴스에 반영 Mirror의 (열거 형 Mirror.DisplayStyle의)을 displayStyle 속성을 볼 수 있습니다 MirrorDisplayStyle 열거 때문에 콘크리트 (미개봉) 유형에 반영해야의 :

struct Foo {} 

let foo: Foo? = Foo() 

if let displayStyle = Mirror(reflecting: foo as Any).displayStyle { 
    // 'as Any' to suppress warnings ... 
    print(displayStyle) // optional 
} 
+0

감사합니다. 나는 수염에 의해 그것을 놓쳤다 :-) – prabodhprakash

+1

@prabodhprakash 당신은 아마 두 개 더 수염을 뚫어서 그것보다 너 자신을 더럽 혔을 것이다 :) – dfri

-3

당신은이 방법을 확인할 수 있습니다;

if let randomClass = controlClass as? RandomClass { 
    /* Codes */ 
} 

이 방법으로 어떤 종류의 클래스를 사용할 수 있는지 이해할 수 있습니다.

+2

그는 클래스 자체의 유형이 아니라 구조를 이해하려고합니다. –

관련 문제