如何在Swift中调用Objective C方法,该方法需要运行时类作为参数

时间:2014-11-02 08:17:59

标签: objective-c swift objective-c-runtime

我现在开始使用 swift 编程大约两周了,我仍然有一些 Objective C 类我想在我的应用中使用。一个例子是从Swift调用这个方法:

+ (void)transitionFromThisVCClass:(Class<SomeProtocol>)aFromVCClass
                       ToThisClassVCClass:(Class<SomeProtocol>)aToVCClass
                    WithNavigationController:(UINavigationController *)aNav
                                WithDuration:(NSTimeInterval)aDuration

我的问题是我无法像在Objective C [SomeClass类]中那样找到传递类类型的方法。任何有关这方面的帮助将非常感激。感谢

更新

如果我试图像这样使用MyClass.self:

ASFSharedViewTransition.addTransitionWithFromViewControllerClass(
     RecommendationListViewController.self,
     toViewControllerClass: RecommendationViewController.self,
     withNavigationController: self.window?.rootViewController,
     withDuration: 0.3)

ASFSharedViewTransition是一个客观的c类,我试图从swift调用

我收到此错误:

Cannot convert the expression's type '(RecommendationListViewController.Type,
toViewControllerClass: RecommendationViewController.Type,
withNavigationController: $T5??,
withDuration: FloatLiteralConvertible)'
to type 'FloatLiteralConvertible'

1 个答案:

答案 0 :(得分:1)

您可以使用foo.self,其中foo是类名。例如,MyClass.self