Прежде всего, позвольте мне поблагодарить всех в сообществе SO заранее за вашу помощь в том, чтобы вытащить меня из этой пробки.NSDecimalNumber.adding от NSManagedObjects, ударяющего по нераспознанной проблеме выбора
Мое приложение ударяет ошибку времени выполнения, и я выделил строку, вызывающую ошибку.
При попытке добавить две переменные NSDecimalNumber использовать метод .adding, я получаю это «непризнанный селектор отправляется, например» Ошибка:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber decimalNumberByAdding:]: unrecognized selector sent to instance 0x608002c361a0'
Я создал фиктивные переменные NSDecimalNumber попробовать и отлаживать этот вопрос , и они, похоже, отлично работают при добавлении. Однако при работе с моими переменными NSManagedObject (result
и newTransaction
), которые имеют переменные NSDecimalNumber, я сталкиваюсь с этой ошибкой.
Ниже приведен код, который вызывает эти вопросы:
//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 переменные не может?
Еще раз спасибо!
Вы указали свойство как «Десятичный» в инспекторе модели данных ядра? Что означает 'print (type (of: result.netChange))' show? –
@MartinR показывает «__NSCFNumber» как для «result.netChange», так и для «newTransaction.amount» –
@MartinR Я вижу, с чем вы столкнулись. Я обновил инспектор модели данных ядра - переменные теперь имеют тип Decimal (раньше они были типа Double). Это устранило проблему. Спасибо за вашу помощь! Как я могу проголосовать за ваш ответ? –