当前位置 : 主页 > 手机开发 > 其它 >

我在哪里注册Swift中的ValueTransformer?

来源:互联网 收集:自由互联 发布时间:2021-06-11
我正在尝试在 Swift中使用ValueTransformer(néNSValueTransformer),我的应用程序打开的第一个窗口正在使用它.值变换器需要在ValueTransformer.registerValueTransformer(_:forName :)中注册,然后才能由用户界
我正在尝试在 Swift中使用ValueTransformer(néNSValueTransformer),我的应用程序打开的第一个窗口正在使用它.值变换器需要在ValueTransformer.registerValueTransformer(_:forName :)中注册,然后才能由用户界面运行时查询.

NSValueTransformer recommends在[AppDelegate initialize]中注册值变换器的文档.但是,Swift不允许您覆盖初始化.我试图从applicationWillFinishLaunching(_)和applicationDidFinishLaunching(_)注册,但它们都发生得太晚而且我的窗口没有被填充,因为运行时找不到值转换器.

我应该在哪里注册我的价值变换器?

你是对的,你可以在AppDelegate中注册你的价值变形金刚.如果你想要更接近ObjectiveC初始化的东西,你可以使用类变量的延迟初始化.例如:

class AppDelegate: NSObject, NSApplicationDelegate {

    static let doInitialize: Void = {
        // register transformers here
    }()

    override init() {
        super.init()
        AppDelegate.doInitialize
    }
}

如果你想让变换器更接近实际使用它们的类,那么这种模式也适用于AppDelegate以外的类.

网友评论