먼저,이 커뮤니티에서 나를 빠져 나오려는 SO 커뮤니티의 모든 분들께 감사드립니다.NSManagedObjects의 NSDecimalNumber.adding에서 인식 할 수없는 셀렉터 문제가 발생합니다.
내 앱이 런타임 오류가 발생하여 오류가 발생한 행을 분리했습니다. 나는이 개 NSDecimalNumber 변수가 .adding 방법을 사용하여 추가하려고하면
, 나는이 "인식 할 수없는 선택기 인스턴스로 전송"오류 :
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber decimalNumberByAdding:]: unrecognized selector sent to instance 0x608002c361a0'
나는이 문제를 시도하고 디버그하는 더미 NSDecimalNumber 변수를 만들었습니다 , 그리고 그들은 추가 할 때 잘 작동하는 것처럼 보입니다. 그러나 NSDecimalNumber 변수가있는 내 NSManagedObject 변수 (result
및 newTransaction
)로 작업 할 때이 오류가 발생합니다.
//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))는 무엇을 보여줍니까? –
@MartinR 'result.netChange'와 'newTransaction.amount'모두에 대해 "__NSCFNumber"가 표시됩니다. –
@MartinR 어디로 향하고 있는지 알고 있습니다. 핵심 데이터 모델 검사기를 업데이트했습니다. 이제 변수는 Decimal 유형입니다 (이전에 Double 유형이었습니다). 이로 인해 문제가 해결되었습니다. 당신의 도움을 주셔서 감사합니다! 당신의 대답에 어떻게 투표합니까? –