まず、私はこのコミュニティから私を引き抜くのにあなたの助けを借りてSOコミュニティの皆さんに感謝します。NSManagedObjectsからNSDecimalNumber.addingが認識できないセレクタの問題に遭う
私のアプリはランタイムエラーを起こし、エラーの原因となった行を分離しました。
私は2つの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型でした)。これで問題は解決しました。ご協力いただきありがとうございます!あなたの答えにどのように投票するのですか? –