English 中文(简体)
新手指南:如何在iPhone应用程序中管理货币
原标题:
  • 时间:2009-01-09 01:47:54
  •  标签:

我正在开发一个需要管理资金数据类型的应用程序。

我对Obj-c还很新,所以我看不出使用NSDecimalNumber的好处。

例如,在我的单元测试中,我这样做:

@interface SamplePerson : NSObject {
    NSString *name;
    NSDate *birthDate;
    NSInteger size;
    NSNumber *phone;
    NSDecimal balance;
    BOOL *isOk;
}

@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSDate *birthDate;
@property (nonatomic) NSInteger size;
@property (nonatomic, retain) NSNumber *phone;
@property (nonatomic) NSDecimal balance;
@property (nonatomic) BOOL *isOk;
--    
o.balance = [NSDecimalNumber decimalNumberWithDecimal: [[NSNumber numberWithLong: 12.5] decimalValue]];

但请警告:

警告:传递参数1的类型与Objective-C类型不同,无法保存。

总体而言,我发现这个问题比预期的更复杂。我可以使用整数进行黑客攻击,但在我10多年的在Foxpro、Delphi、.NET、Python中编程的过程中,我从未遇到过这种工作的问题。

无论如何,我想知道如何做到这一点。我读了网络,但只发现了以上相同的代码和信息,如“使用NSDecimalNumber或会被杀死!”。

我想知道如何:

  • Assing simple values, like 12.5
  • Simple math
  • How store & load from sqlite.

谢谢。

顺便问一下:是否有一个库或工具可以解决这个问题?听起来这是一个普遍的烦恼,对吧?

最佳回答

你收到警告的原因是因为你将余额声明为原始的NSDecimal,而不是NSDecimalNumber *。可以看看这个问题,了解为什么应该使用NSDecimalNumber。

问题回答

此外,12.5不是一个长时间,因此您无法使用。

[NSNumber numberWithLong: 12.5]




相关问题
热门标签