CodableFirebaseとカスタムクラスを使用してFirestoreからnil値を処理するSwift4

mikey9

GoogleのFirestoreを使用しているときに、ライブラリCodableFirebase使用してデータをデコードおよびエンコードしています。値がデータベースで定義されていないが、クラスのプロパティである場合を除いて、これはうまく機能します。スナップショットがFirebaseから戻ってきたときに、nil値を取得しないように、クラスをどのように定義するのでしょうか。

これが起こっていることの簡単な例です。これは私のクラス定義です。

class TimeThing: Codable {
 var requestedTime: Double?
 var createdTime: Double?

 init(
    requestedTime: Double? = 0,
    createdTime: Double? = 0
    ) {
     self.requestedTime = requestedTime
     self.createdTime = createdTime
}}

そして、これはスローされているエラーになります。この場合、createdTimeは、Firestoreに「requestedTime」がない値を持っています。

スレッド1:致命的なエラー:「試してみてください!」式で予期せずエラーが発生しました:Swift.DecodingError.typeMismatch(Swift.Double、Swift.DecodingError.Context(codingPath:[CodingKeys(stringValue: "requestedTime"、intValue:nil)]、debugDescription: "Doubleをデコードする予定ですが、文字列が見つかりました代わりに/data。"、underlyingError:nil))

基本的なものが欠けていることに気づきましたが、残念ながらそれが何であるかわかりません。Firestoreからnil値が発生したときに、tryブロックを爆破しないデフォルトを設定するには、クラスに何をする必要がありますか?

ありがとう!

mikey9

問題の核心は、クラスのデフォルトが正しく定義されていなかったことでした。

class TimeThing: Codable {
 var requestedTime: Double?
 var createdTime: Double?

 init(
    requestedTime: Double? = 0,
    createdTime: Double? = 0
    ) {
     self.requestedTime = requestedTime
     self.createdTime = createdTime
}}

になるはずだった

class TimeThing: Codable {
 var requestedTime: Double? = 0
 var createdTime: Double? = 0

 init(
    requestedTime: Double,
    createdTime: Double
    ) {
     self.requestedTime = requestedTime
     self.createdTime = createdTime
}}

それを修正すると、CodableFirebaseがデコードするためのデフォルトがありました

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

JavaScriptを使用してJSON応答からのカスタムエラーを処理する方法は?

分類Dev

カスタムUncaughtExceptionHandlerを使用してFirebaseクラッシュレポートとカスタムアプリケーションクラスを処理する

分類Dev

SpringBootを使用してRESTでカスタム検証と例外を処理する

分類Dev

fontAwesomeを使用してカスタムアイコンをSwift4のUIbuttonに追加する方法

分類Dev

タイムスタンプ機能を使用して特定の日付と時刻をFirestoreデータベースに保存します-Swift4

分類Dev

Swift4 / 5を使用して複数のクラスを拡張する方法

分類Dev

カスタムクラスを使用してプログラムでUIViewを作成する(Swift 4)

分類Dev

動的キーを使用してSwift4でネストされたJSONからデータを抽出する方法

分類Dev

node.jsとES6を使用して、カスタムデータベース接続クラスから返される値は「未定義」です

分類Dev

go static file serverを使用しているときに見つからないファイルをカスタム処理する方法は?

分類Dev

フォームからクラスのカスタムイベントを処理する

分類Dev

ラムダ式を使用してタスクから値を取得する

分類Dev

AngularJSを使用してカスタムlocalStorageデータを処理する

分類Dev

ウェブカメラからキャプチャした画像/フレームを使用して、同じスクリプトで後処理する方法

分類Dev

Swift4を使用してカスタムUITableCellとフィルターのアイテムを検索します

分類Dev

CodableとCodableFirebaseを使用してFirebase値をすばやく解析する際にnilを取得する

分類Dev

Spring Boot:ControllerAdvice forRESTを使用してカスタム例外を処理する

分類Dev

カスタム認証を使用してSpring5でAuthenticationExceptionを処理する

分類Dev

カスタムJsonSerializerSettingsを使用して配列の作成を処理する方法は?

分類Dev

pyqt4 と python を使用して、あるクラスから別のクラスに値を送信する方法

分類Dev

Swift4ジェネリックスを戻り値として使用

分類Dev

Firestoreからカスタムオブジェクトとしてドキュメントを取得する

分類Dev

カスタム損失関数を使用してバッチサイズエラーを処理する方法は?

分類Dev

Swift4のカスタムボタンをクリックしたときにセルのサイズを変更する

分類Dev

カスタムエラー構造と構造検証を使用してエラー処理を実装しますか?

分類Dev

ChildAddedを使用して、Swift4でFirebaseデータベースから最初のキーを取得します

分類Dev

Sequelizeを使用してRDSクラスターで新しいレプリカを処理する方法は?

分類Dev

ブーストmp11を使用してランタイム値を効率的にオンにします(処理機能が完了すると中断します)

分類Dev

標準とカスタマイズされたSwift4デコード可能プロパティの組み合わせを処理する方法は?

Related 関連記事

  1. 1

    JavaScriptを使用してJSON応答からのカスタムエラーを処理する方法は?

  2. 2

    カスタムUncaughtExceptionHandlerを使用してFirebaseクラッシュレポートとカスタムアプリケーションクラスを処理する

  3. 3

    SpringBootを使用してRESTでカスタム検証と例外を処理する

  4. 4

    fontAwesomeを使用してカスタムアイコンをSwift4のUIbuttonに追加する方法

  5. 5

    タイムスタンプ機能を使用して特定の日付と時刻をFirestoreデータベースに保存します-Swift4

  6. 6

    Swift4 / 5を使用して複数のクラスを拡張する方法

  7. 7

    カスタムクラスを使用してプログラムでUIViewを作成する(Swift 4)

  8. 8

    動的キーを使用してSwift4でネストされたJSONからデータを抽出する方法

  9. 9

    node.jsとES6を使用して、カスタムデータベース接続クラスから返される値は「未定義」です

  10. 10

    go static file serverを使用しているときに見つからないファイルをカスタム処理する方法は?

  11. 11

    フォームからクラスのカスタムイベントを処理する

  12. 12

    ラムダ式を使用してタスクから値を取得する

  13. 13

    AngularJSを使用してカスタムlocalStorageデータを処理する

  14. 14

    ウェブカメラからキャプチャした画像/フレームを使用して、同じスクリプトで後処理する方法

  15. 15

    Swift4を使用してカスタムUITableCellとフィルターのアイテムを検索します

  16. 16

    CodableとCodableFirebaseを使用してFirebase値をすばやく解析する際にnilを取得する

  17. 17

    Spring Boot:ControllerAdvice forRESTを使用してカスタム例外を処理する

  18. 18

    カスタム認証を使用してSpring5でAuthenticationExceptionを処理する

  19. 19

    カスタムJsonSerializerSettingsを使用して配列の作成を処理する方法は?

  20. 20

    pyqt4 と python を使用して、あるクラスから別のクラスに値を送信する方法

  21. 21

    Swift4ジェネリックスを戻り値として使用

  22. 22

    Firestoreからカスタムオブジェクトとしてドキュメントを取得する

  23. 23

    カスタム損失関数を使用してバッチサイズエラーを処理する方法は?

  24. 24

    Swift4のカスタムボタンをクリックしたときにセルのサイズを変更する

  25. 25

    カスタムエラー構造と構造検証を使用してエラー処理を実装しますか?

  26. 26

    ChildAddedを使用して、Swift4でFirebaseデータベースから最初のキーを取得します

  27. 27

    Sequelizeを使用してRDSクラスターで新しいレプリカを処理する方法は?

  28. 28

    ブーストmp11を使用してランタイム値を効率的にオンにします(処理機能が完了すると中断します)

  29. 29

    標準とカスタマイズされたSwift4デコード可能プロパティの組み合わせを処理する方法は?

ホットタグ

アーカイブ