NSDecimalNumber.adding 来自 NSManagedObjects 遇到无法识别的选择器问题

NSDecimalNumber.adding from NSManagedObjects hitting unrecognized selector issue

首先,让我提前感谢 SO 社区中的每一个人,感谢你们帮助我摆脱困境。

我的应用遇到 运行时间错误,我已经隔离了导致错误的行。

当我尝试使用 .adding 方法添加两个 NSDecimalNumber 变量时,我收到此 "unrecognized selector sent to instance" 错误:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber decimalNumberByAdding:]: unrecognized selector sent to instance 0x608002c361a0'

我已经创建了虚拟 NSDecimalNumber 变量来尝试调试这个问题,并且它们在添加时似乎工作正常。但是,在使用具有 NSDecimalNumber 变量的 NSManagedObject 变量(resultnewTransaction)时,我 运行 遇到了这个错误。

下面是导致这些问题的代码:

//Testing with dummy variables
let a1 = NSDecimalNumber(decimal: 5.2)
let a2 = NSDecimalNumber(decimal: 10.8)

print ("a1: \(a1), a2: \(a2)")         //a1: 5.2, a2: 10.8

let a3 = a1.adding(a2)

print ("a3: \(a3)")                    //a3: 16
//Great, everything above works fine.

//Now let's try using my NSManagedObjects, which were defined in another section
let a = result.netChange               //result.netChange is of class NSDecimalNumber
let b = newTransaction.amount          //newTransaction.amount is of class NSDecimalNumber

print ("a: \(a), b: \(b)")             //a: 444.12, b: 22.23

let c = a.adding(b)                    //<---This is where the app crashes

print ("c: \(c)")                      //Does not print, as the app has stopped

我的问题:为什么我的虚拟变量可以相互添加,而我的 NSManagedObject 变量不能?

再次感谢!

"Double" 类型的核心数据 属性 存储为 NSNumber 在 托管对象上下文。仅更改类型中的类型是不够的 NSManagedObject 子类,因为创建了访问器方法 在运行时动态地。您的代码 编译, 但在运行时崩溃 因为变量是 NSNumber 而不是 NSDecimalNumber.

解决方法是在Core Data模型中设置type为"Decimal" 检查员.