在Swift中将类作为函数参数
在我的应用程序有不同的ViewControllers的许多类。 我正在寻找方式给类名作为函数参数,所以我可以在函数中使用它。
例
func myFunc (var1: String, var2 : Int, var3 : myClass) { var example = myClass(); example.name = var1; example.age = var2; }
我看到这个线程在Swift中符合协议的函数参数,但我不明白我该如何解决我的问题。
你可以做到这一点,而无需传递视图控制器的实例:
import Cocoa protocol MyViewControllerType : class { var name : String { get set } var age : Int { get set } } class FirstViewController : NSViewController, MyViewControllerType { var name = "" var age = 0 } class SecondViewController : NSViewController, MyViewControllerType { var name = "" var age = 0 } func myFunc<VC : NSViewController where VC : MyViewControllerType>(viewControllerType: VC.Type, name: String, age: Int) -> VC { let viewController = VC() viewController.name = name viewController.age = age return viewController } let first = myFunc(FirstViewController.self, name: "Bob", age: 20) let second = myFunc(SecondViewController.self, name: "Paul", age: 30)