简体   繁体   English

在Swift中将类作为函数参数

[英]Class as function parameter in Swift

In my app there are many classes for different ViewControllers. 在我的应用程序中,有许多用于不同ViewController的类。 I am searching way to give class name as function parameter so i can use it in function. 我正在寻找给类名作为函数参数的方法,以便可以在函数中使用它。

Example

func myFunc (var1: String, var2 : Int, var3 : myClass) {
 var example = myClass();
 example.name = var1;
 example.age = var2;
}

i saw this thread Class conforming to protocol as function parameter in Swift but i didn't understand how can i solve my problem with it. 在Swift中将符合协议的线程类视为函数参数,但我不明白如何解决该问题。

You can do this without the need to pass an instance of your view controller: 您可以这样做,而无需传递视图控制器的实例:

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)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM