- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我似乎总是在 NSDecimalNumber 方面遇到麻烦!今天,我收到此错误:
"Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFNumber decimalNumberByDividingBy:withBehavior:]: unrecognized selector sent to instance 0xd1fb10'"
这是错误的来源:
- (void)setUpInstance {
static NSDecimalNumberHandler* roundingBehavior = nil;
if (roundingBehavior == nil) {
roundingBehavior = [[NSDecimalNumberHandler alloc] initWithRoundingMode:NSRoundDown scale:2 raiseOnExactness:NO raiseOnOverflow:NO raiseOnUnderflow:NO raiseOnDivideByZero:NO];
}
NSDecimalNumber *amount = viewController.aDecimalNumber;
NSDecimalNumber *actualValue = viewController.anotherDecimalNumber;
integralPortion = [amount decimalNumberByDividingBy:actualValue withBehavior:roundingBehavior];
...
}
文档将该方法定义为:
-(NSDecimalNumber*)decimalNumberByDividingBy:(NSDecimalNumber *)decimalNumber
withBehavior:(id<NSDecimalNumberBehaviors>)behavior
我一定没有正确解释“(id<NSDecimalNumberBehaviors>)behavior
”参数。只要符合 NSDecimalNumbersBehaviors 协议(protocol),这不是任何对象吗?
我做错了什么?代码示例将非常有帮助。
周五快乐!
最佳答案
Today, I get this error: "Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFNumber decimalNumberByDividingBy:withBehavior:]: unrecognized selector sent to instance 0xd1fb10'"
这意味着您正在将该消息发送到一个普通的 NSNumber(幕后的 NSCFNumber)。您只能将其发送到 NSDecimalNumber。
请注意,如何声明变量是无关紧要的。您可以将 amount
声明为 NSString *amount
并且您将得到完全相同的异常,包括 NSCFNumber 作为类名,因为它是一个异常,发生在运行时。 (当然,您还会收到有关 NSString 和 NSDecimalNumber 不可互换的编译时警告。)
关于objective-c - NSDecimalNumber 的decimalNumberByDividingBy :withBehavior: 出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1180867/
我是一名优秀的程序员,十分优秀!