在我的应用程序中,我得到了一个名为A
的类。我有2个类(B
和C
)继承自这个类。
Controller
类有一个方法class func D(includeStored: Bool, completion: (results: [Controller]) -> Void)
。
这是Controller类的静态方法,我的2个子类可以覆盖此方法,但不确定它是什么。
我想创建一个包含我的2个子类的类型的数组,如下所示:
var myTypes = [ B.self, C.self ]
然后我想对这些类型执行函数A
,但我无法完成这项工作。
我尝试过:
for item in myTypes {
(item as A.self).D(false, completion: { (results) -> Void in
});
}
这不起作用。也没有演员表明(显然)不起作用,因为它是一个AnyObject。因为它不是一个对象,而是一个我想要使用的类,我无法正常投射它。
也尝试了这个,但是这会崩溃,因为它试图实例化该类型,但它也是一个NSManagedObject,所以它不能以这种方式实例化(item()
)。
var myTypes: [A.Type] = [ B.self, C.self ];
for item in controllerClasses {
var i = item();
i.dynamicType.D(false, completion: { (results) -> Void in
NSLog("Found: \(results.count)");
});
}
有关如何使其工作的任何指示?
答案 0 :(得分:0)
好吧,这比我想象的容易。在myTypes
数组上指定类型后,我可以轻松地遍历它们。因为它是类的静态方法,所以我根本不需要实例化它,我可以直接使用它。
var myTypes: [A.Type] = [ B.self, C.self ];
for item in myTypes {
item.D(false, completion: { (results) -> Void in
});
}
将其作为答案发布,因此对于任何需要它的人都知道它已经解决了。