我正在尝试在 Swift 中使用 ValueTransformer
(né NSValueTransformer
),我的应用程序打开的第一个窗口正在使用它。值转换器需要在 ValueTransformer.registerValueTransformer(_:forName:)
中注册,然后才能被用户界面运行时查询。
NSValueTransformer
的文档 recommends在 +[AppDelegate initialize]
中注册值转换器。但是,Swift 不允许您覆盖 +initialize
。我尝试从 applicationWillFinishLaunching(_)
和 applicationDidFinishLaunching(_)
注册,但它们都发生得太晚了,我的窗口没有被填满,因为运行时找不到值(value)转换器。
我应该在哪里注册我的值(value)转换器?
最佳答案
在 AppDelegate 中,您可以使用带有闭包的 Void
类型的虚拟属性。闭包甚至在 init
private let transformer : Void = {
let myTransformer = MyValueTransformer()
ValueTransformer.setValueTransformer(myTransformer, forName:NSValueTransformerName("MyValueTransformer"))
}()
关于swift - 我在哪里注册 Swift 中的 ValueTransformer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49136606/