nsdecimalnumber应该如何存储在数据库中?

时间:2010-10-12 21:21:36

标签: objective-c ios4 nsdecimalnumber

在数据库中存储nsdecimalnumbers的最佳方法是什么?浮点数,实数和双精度等数字类型都没有,因为保持货币使用的精确度非常重要。

我考虑过的两个选择是字符串并存储两个整数,一个包含尾数,另一个包含指数。后一种方法面临的挑战是我没有看到一种简单的方法来将尾数和指数拉出nsdecimalnumber。我可以从NSDecimalNumber获得NSDecimal,但尾数和指数属性似乎是私有的!也许我可以反转数字=(尾数* 10 ^指数),但还有更好的方法吗?

我的要求是我需要对数据库中的这个字段执行一些总和操作。如果我以字符串形式存储,那么执行此计算可能会更困难。我仍然需要编写一个自定义函数来对数据库中的尾数和指数求和,所以也许它仍然很重。

编辑:我可以访问指数,但尾数保持一种奇怪的方式......在调试器中查看它会显示它是一个短数组(整数)。

1 个答案:

答案 0 :(得分:1)

NSDecimalNumber符合NSCoding,因此您可以在将其添加到数据库之前使用encodeWithCoder:对其进行编码,然后在从数据库中检索时使用initWithCoder:对其进行解码。

有关使用编码器的详细信息,请参阅Archives and Serializations Programming Guide,特别是“Encoding and Decoding Objects”。