Core data NSArrayController NSTableView核心数据绑定整数

Core data NSArrayController NSTableView核心数据绑定整数,core-data,nstableview,nsarraycontroller,nstablecellview,Core Data,Nstableview,Nsarraycontroller,Nstablecellview,我有一个绑定到NSArrayController的NSTableView,而NSArrayController又绑定到核心数据。该表很好地显示了核心数据中的整数值,但如果编辑表中的数字,则会出现错误: Unacceptable type of value for attribute: property = "armorclass"; desired type = NSNumber; given type = NSTaggedPointerString; value = 10. 在阵列控制器尝试

我有一个绑定到NSArrayController的NSTableView,而NSArrayController又绑定到核心数据。该表很好地显示了核心数据中的整数值,但如果编辑表中的数字,则会出现错误:

Unacceptable type of value for attribute: property = "armorclass"; desired type = NSNumber; given type = NSTaggedPointerString; value = 10.
在阵列控制器尝试将此指针字符串保存回核心数据之前,有没有关于如何将其转换回Int16的建议

我编写了以下ValueTransformer,但它工作不正常。我总是遇到错误:找不到名为StringIntegerValueTransformer的值转换器

class StringIntegerValueTransformer: ValueTransformer {

    override class func transformedValueClass() -> AnyClass { //What do I transform
        return String.self as! AnyClass
    }

    override class func allowsReverseTransformation() -> Bool { //Can I transform back?
        return false
    }

    override func transformedValue(_ value: Any?) -> Any? {
        if let val = value {
            return String(describing: val)
        }
        return "nil"
    }

    override func reverseTransformedValue(_ value: Any?) -> Any? { //Revert transformation
        if let val = value {
            return val as? Int16
        }
        return nil
    }
}

fff

AppDelegate

override init()
{
   let stringIntegerValueTransformer = StringIntegerValueTransformer()
   ValueTransformer.setValueTransformer(stringIntegerValueTransformer, forName:NSValueTransformerName(rawValue: "StringIntegerValueTransformer"))
   super.init()
 }

并考虑文档

中的注释 NSValueTransformer子类不会自动列在Interface Builder绑定检查器中。检查绑定时,可以输入值转换器注册的名称,但该功能不会出现在Interface Builder的测试模式中。编译并运行应用程序时,将使用转换器


将数字格式化程序添加到文本字段