GitHub の gg-mark/NullCodable にある NullCodable.swift をコピーしておき、 encode したい構造体の Optional 型のプロパティに @NullCodable
という propertyWrapper を付ければ消えない様になります。
例
import FirebaseFirestore
struct Data: Codable {
var a: Int? = nil
@NullCodable var b: Int? = nil
}
let data = Data()
let encodedData = Firestore.Encoder().encode(data)
print(encodedData)
["b": <null>]
NullCodable
がない a
は消えて、
NullCodable
をつけた b
は残っている。