2

속성 금액이있는 핵심 데이터 엔티티가 NSDecimalNumber입니다. 이 프로퍼티의 경우, 엔티티의 클래스는 인수로 NSDecimalNumber으로 정의 된 메소드를가집니다.통화로 NSDecimalNumber를 IB로 표시

인터페이스 작성기에서이 속성에 테이블 열을 연결하고 (NSArrayController 사용) 열의 셀에 NSNumberFormatter을 넣습니다. 포맷터는 IB에서 '통화'로 구성됩니다.

-[NSCFNumber decimalNumberBySubtracting:]: unrecognized selector sent to instance 0x1001d5590 

은 분명히 내 setter 메소드가 NSDecimalNumber이 아닌 일반 NSNumber를 수신 : 나는 숫자를 입력 할 때

지금, 나는 다음과 같은 오류가 발생합니다. 포맷터를 IB가 아닌 코드로 다르게 구성 할 수 있습니까? 아니면 NSNumber을 인수로 사용하여 추가 설정기를 추가 할 수 있습니까?

답변

1

그것은 문제가 정확히 나에게 분명하지 않다. 포맷터가 NSDecimalNumber 대신에 곧은 NSNumber를 제공하거나 코어 데이터가 제공됩니다.

는 데이터 저장소는 당신에게 NSDecimalNumbers을 제공하려면 방법 -setGeneratesDecimalNumbers:

를 사용 NSNumberFormatter 당신에게 NSDecimalNumbers을 줄 수 있도록 모델의 관련 속성이 "진수"로 설정되어 있는지 확인합니다.

2

코어 데이터는 NSDecimalNumber 만 저장하고 NSNumber 만 저장합니다. NSNumber에는 호출되는 메소드가 없습니다.

엔티티 정의를 변경하여 NSNumber을 사용하거나 NSDecimalNumber을 핵심 데이터에 저장하기 위해 자신의 NSValueTransformer을 빌드해야합니다.

속성에 대한 자세한 내용은 여기를 봐주십시오 http://developer.apple.com/library/ios/ipad/#documentation/Cocoa/Conceptual/CoreData/Articles/cdMOM.html%23//apple_ref/doc/uid/TP40002328-SW1

+1

모델의 속성 유형이 10 ​​진수이면 생성 된 객체는 NSDecimalNumber가됩니다. – JeremyP

+0

방금 ​​decimal 속성을 가진 엔티티를 생성 한 새 프로젝트를 만들었습니다. 그런 다음 표와 인터페이스를 만들고이 값에 열 + 포맷터를 바인딩했습니다. 결과 : 1. 콘센트에 바인딩 된 NSNumberFormatter는 NO를 generateDecimalNumber로 반환합니다. 2. 속성 값에서 클래스를 요청하면이 코드를 사용하여 NSDecimalNumber를 얻습니다. NSLog (@ "amount class = % @", [[obj amount] class]); – nephilim

관련 문제