2

nsdecimalnumbersをデータベースに保存するための最良の方法は何ですか?通貨の使用の精度を維持することが重要であるため、float、real、doubleなどの数値タイプは除外されています。

私が検討した2つの選択肢は、文字列と2つの整数を格納することです。1つは仮数を保持し、もう1つは指数を保持します。後者のアプローチが直面している課題は、仮数と指数をnsdecimalnumberから引き出す簡単な方法がわからないことです。NSDecimalNumberからNSDecimalを取得できますが、仮数と指数のプロパティはプライベートのようです。おそらく、数値=(仮数* 10 ^指数)を逆にすることができますが、これを行うためのより良い方法はありますか?

私が持っている要件は、データベースのこのフィールドに対していくつかの集計合計操作を実行する必要があるということです。文字列として保存すると、この計算を実行するのが難しくなる可能性があります。データベース内の仮数と指数を合計するカスタム関数を作成する必要があるので、おそらくそれでも同じくらい重いでしょう。

編集:指数にアクセスできますが、仮数は奇妙な方法で保持されます...デバッガーでそれを突くと、それがshort(ints)の配列であることがわかります。

4

1 に答える 1

1

NSDecimalNumber はNSCodingに準拠してencodeWithCoder:いるため、データベースに追加する前にでエンコードしinitWithCoder:、データベースから取得するときに を使用してデコードできます。

エンコーダーの使用の詳細については、Archives and Serializations Programming Guide、特に「Encoding and Decoding Objects 」を参照してください。

于 2010-10-12T21:52:48.953 に答える