我正在构建一个需要管理money数据类型的应用。
我是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]];
但是要收到警告:
警告:从不同的Objective-C类型
传递'save:'的参数1
总而言之,我认为这个问题比预期更复杂。我可以破解使用整数,但我在Foxpro,Delphi,.NET,Python的10多年编程中从未这样做过......从来没有做过这类工作的问题。
无论如何,我想知道这是怎么回事。我在网上阅读,但只发现了与上面相同的代码和“使用NSDecimalNumber或被杀!”等信息。
我想知道如何:
谢谢。
(顺便说一句:存在一个解决这个问题的库或实用程序?这听起来像是一个常见的头疼,严厉吗?)
答案 0 :(得分:3)
您收到该警告的原因是您将平衡声明为原始NSDecimal,而不是NSDecimalNumber *。请查看this question,了解为什么要使用NSDecimalNumber。
答案 1 :(得分:1)
也是12.5不长,所以你不能使用
[NSNumber numberWithLong: 12.5]