0

NSArrayController에 바인딩 된 NSTableView가 코어 데이터에 바인딩됩니다. 표는 잘 핵심 데이터의 정수 값을 표시하지만이 표에 숫자를 편집하는 경우 오류가 발생합니다 : 나는 어레이 컨트롤러 시도하기 전에 INT16 다시이 포인터 문자열을 변환 할 수있는 방법NSArrayController NSTableView 코어 데이터 바인딩 정수

Unacceptable type of value for attribute: property = "armorclass"; desired type = NSNumber; given type = NSTaggedPointerString; value = 10. 

어떤 제안 다시 코어 데이터로 저장 하시겠습니까?

다음 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 
    } 
} 

답변

1

FFF와 값 변압기를 찾을 수 없습니다

Your NSValueTransformer subclasses are not automatically listed in the Interface Builder bindings inspector. When inspecting a binding you can enter the name that the value transformer is registered with, but the functionality will not be present in Interface Builder’s test mode. When your application is compiled and run the transformer will be used

0

텍스트 필드에 숫자 포맷터를 추가하십시오.

관련 문제