我正在尝试在 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以外的类.
