2015-01-30 4 views
-1

Я хочу передать объект и тип в метод, и узнать, что объект имеет переданный тип. Я думаю, что это работает для AnyObject. Но любой может быть также Strcuts, струнные, парный ..Выясните, существует ли какой-либо неопределенный тип

Мое решение с AnyObject выглядит следующим образом:

class AClass { 

} 

class BClass { 

} 
class TypeCheck { 
    var type : AnyObject.Type; 
    init(type: AnyObject.Type) { 
     self.type = type; 
    } 
    func isOfType(object: AnyObject) -> Bool { 
     return self.type === object.dynamicType.self ? true : false; 
    } 
} 

var typeCheck = TypeCheck(type: AClass.self); 
var a = AClass(); 
var b = BClass(); 
println("Object \(a) is of checked Class: \(typeCheck.isOfType(a))");//true 
println("Object \(b) is of checked Class: \(typeCheck.isOfType(b))");//false 

Как, как в этом примере с TypeCheck.type я должен хранить тип я хочу, чтобы проверить против. Есть ли решение для этого? Все, что я нашел, это решения с определенными типами или только для объектов.

ответ

0

Вы можете сделать это еще проще с генериков:

import UIKit 

class AClass { 

} 

class BClass { 

} 


class TypeCheck<T> { 
    func isOfType<U>(arg: U) -> Bool { 
     return arg is T 
    } 

} 

var typeCheck = TypeCheck<AClass>(); 
var a = AClass(); 
var b = BClass(); 

println("Object \(a) is of checked Class: \(typeCheck.isOfType(a))");//true 
println("Object \(b) is of checked Class: \(typeCheck.isOfType(b))");//false 
+0

Ну, что, кажется, работает с типами, которые не являются объектами, которые отлично. Я должен признать, что мне нужно окутать голову, как это работает. Как бы это выглядело, если бы мы передали как тип, так и объект/значение в качестве аргумента? Думаю, это может помочь мне понять логику или это невозможно? Я специально падаю на .. – Alex

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