2015-01-03 6 views
0

мне нужно проверить, чтобы увидеть, если тип я передаю к функции определенного класса или неБыстрое сравнение двух MetaTypes?

func doSomething<T> (type: T.Type) -> T { 

    // Check to see if type is the same as Raw type? 

    if type == Raw.self { } // Doesn't work, Compile error 

    if type is? Raw.self { } // Doesn't work, Compile error 
} 

@objc class Raw { 

} 

ответ

1

Функция перегрузкой будет моим первым выбором, но ответить на этот вопрос; либо использовать NSStringFromClass или следующее:

@objc class Raw { 

} 

func doSomething<T: AnyObject> (type: T.Type) -> T { 

    type as AnyClass === Raw.self as AnyClass { } 

    // return something 
} 

Это решение, кажется, работает с чисто Swift классов тоже.

+0

Должен быть лучший способ просто сравнить классы, похожие на Objective C – aryaxt

+0

Я обновил свой ответ. –

Смежные вопросы