First, let me thank everyone in the SO community in advance for your help in getting me out of this jam.
My app hits a runtime error, and I've isolated the line causing the error.
When I attempt to add two NSDecimalNumber variables use the .adding method, I receive this "unrecognized selector sent to instance" error:
Terminating app due to uncaught exception
'NSInvalidArgumentException', reason: '-[__NSCFNumber
decimalNumberByAdding:]: unrecognized selector sent to instance
//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
A core data property of type "Double" is stored as
NSNumber in the
managed object context. It is not sufficient to change the type in the
NSManagedObject subclass because the accessor methods are created
dynamically at runtime. Your code compiles, but crashes at runtime
because the variable is a
NSNumber and not a
The solution is to set the type to "Decimal" in the Core Data model inspector.