【问题标题】:Class as function parameter in Swift类作为 Swift 中的函数参数
【发布时间】:2015-08-26 07:38:40
【问题描述】:

在我的应用程序中,有许多用于不同 ViewController 的类。 我正在寻找将类名作为函数参数的方法,以便我可以在函数中使用它。

例子

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

我看到了这个帖子Class conforming to protocol as function parameter in Swift,但我不明白如何解决我的问题。

【问题讨论】:

  • 为什么要将类作为函数参数传递?你不能传递一个类实例吗?
  • 同意@MarioZannone,你的问题应该通过继承和将实例变量传递给控制器​​来解决
  • 你能给我举个例子吗?

标签: ios swift


【解决方案1】:

您可以在不需要传递视图控制器实例的情况下执行此操作:

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    • 2016-09-24
    • 2018-12-12
    • 1970-01-01
    相关资源
    最近更新 更多