0

ええと、それは実際には絶対値を取得したいNSDecimalNumbersの配列の合計です...必要なすべての変換と型キャストでフレームワークと戦っているように常に感じています...doubleからNSNumberまでNSDecimalNumberに移動し、戻って...すべてNSDecimalNumberが提供する精度を維持しようとします。以下は機能しますが、この変換と型キャストをすべて回避する簡単な方法はありますか?

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

おそらく、NSNumberFormatter(currencyFormatter)を変更して-記号を無視することができますか?

4

1 に答える 1

1

型キャストは必要ありません。

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

NSDecimalNumberはNSNumberのサブクラスであるため、これは正常に機能します。

また、sectionLabelがIBでバインドするものである場合は、値totalAmtを「value」ではなく「patternvalue」にバインドしてみてくださいsectionLabel。これにより、最後の行が保存されます:)また、customObjectArrayがを介してアクセスできる場合はNSArrayController、最初の行に指定されたキーパスを「パターン値」バインディングのキーパスとして入力する必要があります。この方法を使用すると、指定された3行すべてを削除できます:)

于 2009-08-15T08:36:25.337 に答える