NSDecimalNumber
をEncodable & Decodable
プロトコルに準拠させることは可能ですか?NSDecimalNumberをコーディング可能にする
2
A
答えて
1
すぐにDecimalタイプを使用してください。このタイプは、プロトコルEncodable & Decodable
をボックスから確認します。
あなたのコードでNSDecimalNumber
タイプを持っている場合は、それはEncodable
& Decodable
プロトコルに準拠するようにNSDecimalNumber
を拡張することはできませんDecimal
let objcDecimal = NSDecimalNumber(decimal: 10)
let swiftDecimal = (objcDecimal as Decimal)
3
にキャストするのは簡単です。ジョーダンローズは次のように説明しますswift evolution email thread。
APIにNSDecimalValue
タイプが必要な場合は、計算されたプロパティをDecimal
の周りに構築できます。
struct YourType: Codable {
var decimalNumber: NSDecimalNumber {
get { return NSDecimalNumber(decimal: decimalValue) }
set { decimalValue = newValue.decimalValue }
}
private var decimalValue: Decimal
}
Btw。構文解析にNSNumberFormatter
を使用している場合、場合によっては精度の低下の原因となるknown bugに注意してください。
let f = NumberFormatter()
f.generatesDecimalNumbers = true
f.locale = Locale(identifier: "en_US_POSIX")
let z = f.number(from: "8.3")!
// z.decimalValue._exponent is not -1
// z.decimalValue._mantissa is not (83, 0, 0, 0, 0, 0, 0, 0)
解析文字列の代わりにこの方法:あなたがこれまでに試してみました何
NSDecimalNumber(string: "8.3", locale: Locale(identifier: "en_US_POSIX"))
関連する問題
- 1. コーディング可能なカスタムゲッタービルドエラー
- 2. コーディング可能、デコード可能な辞書のみの値
- 3. 編集可能なPDFでコーディングのレベル
- 4. Swift 4コーディング可能なjsonを使用する
- 5. NSValueをNSDecimalNumberに変換する
- 6. NSDecimalNumberに1.66を格納する方法
- 7. decoder.container(keyedBy :)はDecodingError.typeMismatchエラーをスローします。コーディング可能なバグ?
- 8. スウィフト - オプションNSDecimalNumber
- 9. NSDecimalNumberのdecimalNumberByDividingByに関する問題:withBehavior:
- 10. Swift 4 - コーディング可能 - デコード時にキーにさまざまなオブジェクトタイプを許可する方法
- 11. カナリアンのリリース、可能な限り、コーディングでそれをシミュレートする方法
- 12. コーディング可能な前後のJSONデータの比較
- 13. SWIFT 4ネストされたJSON構造体 - コーディング可能
- 14. NSDecimalNumber swiftを減算しますか?
- 15. NSDecimalNumber、NSDecimalNumberHandler、およびスレッド
- 16. NSDecimalNumberでヘルプが必要
- 17. SwiftオーバーロードNSDecimalNumber演算子
- 18. NSDecimalnumberをスウィフトの文字列に変換する方法
- 19. これをNSDecimalNumberに移植する方法?
- 20. NSDecimalNumberをこのようにエンコードする際のメモリの問題?
- 21. コーディングの新機能 - サブスクリプトをJavascriptで保存するには
- 22. NSStringのNSDecimalNumberはなぜですか?
- 23. Swift 4 - コーディング可能なプロトコル(ネストされたデータ)を使用したJSON解析
- 24. 多型アイテムと管理可能なアイテムタイプを使用した在庫システムのコーディング
- 25. ロケールに基づいてNSStingをNSDecimalNumberに変換します
- 26. ビットマップフィールドをフォーカス可能にしてクリック可能にするには
- 27. 全体をホバー可能にしてクリック可能にする
- 28. マーカーをドラッグ可能にしてクリック可能にする
- 29. Swiftでコーディングして、Windows上で実際のデバイスに展開することは可能ですか?
- 30. MVCでビューモデルに機能をコーディングできますか?
?あなたの要件は何ですか?何をエンコード/デコードしようとしていますか? –
@LorenzoBカスタムタイプのエンコードとデコードについては、アップルのドキュメントhttps://developer.apple.com/documentation/foundation/archives_and_serialization/encoding_and_decoding_custom_typesをチェックしました。私はDoubleを使用した場合、私が精度が低いサーバーからの応答を解析しようとしています。 –