swift - 我在哪里注册 Swift 中的 ValueTransformer?

标签 swift macos cocoa

我正在尝试在 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/

相关文章:

swift - map 框中路线的多色多段线

ios - 如何一次关闭两个模态视图 Controller ?

swift - 如何在 macOS 上为 Linux 构建 swift 可执行文件

iphone - 如何有选择地更新某些 SQLite 表以保留 iPhone 应用程序更新的用户数据?

xcode - 使用单一 Storyboard的新 Xcode 本地化工作流程

cocoa-touch - 无法使 NSURL 形成字符串

swift - Cocoa - PDFView/ThumbnailView 拖动

macos - MacOS 上的 HiDPI/backingScaleFactor,如何获取实际值?

macos - Mac OS X 狮子 : What is the max path length?

xcode - Swift 协议(protocol)扩展覆盖