NSArrayControllerにバインドされたNSTableViewは、コアデータにバインドされています。テーブルには、きれいにコアデータから整数値を表示しますが、私はテーブル内の数字を編集する場合、私はエラーを取得する:私は、アレイコントローラを試みる前にInt16型に戻し、このポインタの文字列を変換する方法のNSArrayController NSTableViewコアデータバインディング整数
Unacceptable type of value for attribute: property = "armorclass"; desired type = NSNumber; given type = NSTaggedPointerString; value = 10.
任意の提案それをCore Dataに保存するには?
次のValueTransformerを書きましたが、正しく機能していません。私は常にエラーを取得:ドキュメントからこのノートをAppDelegate
override init()
{
let stringIntegerValueTransformer = StringIntegerValueTransformer()
ValueTransformer.setValueTransformer(stringIntegerValueTransformer, forName:NSValueTransformerName(rawValue: "StringIntegerValueTransformer"))
super.init()
}
に値トランスオーバーライドinit
を登録し、検討する名前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
}
}