swift - 在 Swift 中添加 ValueTransformer

标签 swift xcode cocoa binding

我想将 ValueTransformer 添加到 cocoa 绑定(bind)中。 我创建了一个 ValueTransformer 类,但它在 IB 中不可见。 当在 IB 中添加为 ValueTransformer 时,应用程序将在启动时崩溃

class myTransformer: ValueTransformer {

override func valueClassForBinding(_ binding: String) -> AnyClass? {
    return NSString.self
}

override func transformedValue(_ value: Any?) -> Any? {
    return "test"
}


}

Cannot find value transformer with name myTransformer

我错过了什么吗?

谢谢!

最佳答案

首先,将您的值转换器名称注册到 NSValueTransformerName。

extension
NSValueTransformerName {
    static let myTransformerName = NSValueTransformerName( rawValue: "myTransformer")
}

然后在程序的最开始注册您的值转换器,即 AppDelegate 的初始化程序。

@NSApplicationMain class
AppDelegate: NSObject, NSApplicationDelegate {
    override
    init() {
        super.init()
        ValueTransformer.setValueTransformer( myTransformer(), forName: .myTransformerName )
    }
}

https://developer.apple.com/documentation/foundation/valuetransformer

关于swift - 在 Swift 中添加 ValueTransformer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42632442/

相关文章:

ios - 如何在 Swift 中创建 toast 消息?

ios - Swift,Tableview 约束行为不正常 - Xcode 9

ios - 使用 pod 中的测试代码在物理设备上运行 Xcode ui 测试

objective-c - 苹果操作系统 X : Getting detailed process information (specifically its launch arguments) for arbitrary running applications using its PID

objective-c - 数据带字节无复制 :length: memory management

ios - PushViewController 崩溃

ios - Xcode 6 缺少实用程序应用程序模板

iphone - iphone 应用程序中的后退导航

xcode - 解析 AppleScriptObjC 中的 NSAppleEventDescriptor

swift - 实现无限滚动时多次调用 scrollViewDidLoad