gpt4 book ai didi

Swift - 在静态/类函数中引用当前类类型

转载 作者:搜寻专家 更新时间:2023-10-31 21:47:12 26 4
gpt4 key购买 nike

我有静态函数来实例化看起来像的 View Controller

class AController: UIViewController {
static func instantiate() -> AController {
let storyboard = UIStoryboard(name: "AController", bundle: nil)
let controller = s.instantiateInitialViewController() as? AController
return controller!
}
}

class BController: UIViewController {
static func instantiate() -> BController {
let storyboard = UIStoryboard(name: "BController", bundle: nil)
let controller = storyboard.instantiateInitialViewController() as? BController
return controller!
}
}

我有一堆这样的,所以我想把它变得更干净:

class MYViewController: UIViewController {
class func instantiate() -> self.type {
let storyboard = UIStoryboard(name: "\(self.type)", bundle: nil)
let controller = storyboard.instantiateInitialViewController() as? self.type
return controller!
}
}

class AController: MYViewController {
}

class BController: MYViewController {
}

但我不知道如何在静态/类函数中动态引用对象的类型,以及如何在从子类调用时让 this 引用子类。使用 type(of: object)

实例化对象后,这很容易做到

最佳答案

试试这个:

class MYViewController: UIViewController {
class func instantiate() -> Self {
let storyboard = UIStoryboard(name: "\(self)", bundle: nil)
let controller = storyboard.instantiateInitialViewController() as! Self
return controller
}
}

我不是 100% 确定它是否有效,因为我没有直接测试您的代码(不想创建一个仅用于测试的 Storyboard),但我编写了类似的代码来测试它,它有效:

class MYViewController: UIViewController {
class func instantiate() -> Self {
print("type: \(self)")
return self.init()
}
}

关于Swift - 在静态/类函数中引用当前类类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41398244/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com