gpt4 book ai didi

objective-c - NSDecimalNumber 的decimalNumberByDividingBy :withBehavior: 出现问题

转载 作者:行者123 更新时间:2023-12-03 17:00:38 25 4
gpt4 key购买 nike

我似乎总是在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com