2009-08-13 5 views
0

Nun, es ist eigentlich die Summe einer Reihe von NSDecimalNumbers Ich möchte den absoluten Wert von ... Ich habe ständig das Gefühl, ich kämpfe das Framework mit allen Konvertierungen & typecasting das werden benötigt ... von double zu NSNumber zu NSDecimalNumber und zurück und ... alles, während versucht wird, die Genauigkeit beizubehalten, die NSDecimalNumber bietet. Das Folgende funktioniert aber gibt es einen einfacheren Weg, der all diese Umwandlung vermeidet & Typ Casting?Formatierte absolute Wert einer NSNumber

vielleicht könnte ich den NSNumberFormatter (currencyFormatter) ändern, um das - Zeichen zu ignorieren?

Antwort

1

Sie brauchen nicht die Art zu werfen.

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

wird dies funktionieren, weil NSDecimalNumber eine Unterklasse von NSNumber ist.

Und wenn sectionLabel etwas ist, das Sie in IB binden, versuchen Sie, den Wert totalAmt an "Musterwert" anstelle von sectionLabel an "Wert" zu binden. Dies speichert die letzte Zeile :) Und wenn customObjectArray etwas ist, das Sie über eine NSArrayController zugreifen können, dann sollten Sie den angegebenen Schlüsselpfad in der ersten Zeile als Schlüsselpfad in der Bindung 'Musterwert' eingeben. Auf diese Weise können Sie alle angegebenen drei Zeilen löschen :)