2009-08-13 1 views
0

글쎄, 실제로 NSDecimalNumbers 배열의 합계입니다. 절대 값을 얻고 싶습니다 ... 모든 변환을 사용하여 프레임 워크와 계속 싸우고있는 것 같습니다. & typecasting NSDecimalNumber가 제공하는 정밀도를 유지하면서 NSDecimalNumber와 NSDecimalNumber에 이르기까지 모든 것이 필요합니다. 다음은 작동하지만이 모든 변환을 피하는 쉬운 방법이 있습니까 & 형 변환입니까?NSNumber의 형식화 된 절대 값

NSNumber *totalAmt = [customObjectArray valueForKeyPath:@"@sum.decimalNumberValue"]; 
NSString *totalAmtString = [currencyFormatter stringFromNumber:[NSNumber numberWithDouble:fabs([totalAmt doubleValue])]]; 
sectionLabel.text = [NSString stringWithFormat:@"Total: %@", totalAmtString]; 

아마도 NSNumberFormatter (currencyFormatter)를 - 기호를 무시하도록 변경할 수 있습니까?

답변

1

캐스팅하지 않아도됩니다.

NSNumber *totalAmt = [customObjectArray valueForKeyPath:@"@sum.decimalNumberValue"]; 
NSString *totalAmtString = [currencyFormatter stringFromNumber:totalAmt]; 
sectionLabel.text = [NSString stringWithFormat:@"Total: %@", totalAmtString]; 

NSDecimalNumber는 NSNumber의 하위 클래스이기 때문에 정상적으로 작동합니다.

그리고 sectionLabel이 IB에 바인딩하는 것이면 대신 '패턴 값'으로 값 totalAmt을 '값'으로 바인딩하십시오. 그러면 마지막 줄이 저장됩니다. customObjectArrayNSArrayController을 통해 액세스 할 수있는 경우 '패턴 값'바인딩에서 키 경로로 첫 번째 줄에 지정된 키 경로를 입력해야합니다. 이 방법을 사용하면 주어진 세 줄을 모두 삭제할 수 있습니다 :)