首页 > 解决方案 > Firebase Firestore 可以保存一个字典,其中条目属于带有枚举的自定义类型吗?

问题描述

在 Firestore 中存储自定义类型时,我得到以下信息:由于未捕获的异常“FIRInvalidArgumentException”而终止应用程序,原因:“不支持的类型:__SwiftValue”

struct Reply: Codable {
    var acceptance: Acceptance
    var date: Date

    enum CodingKeys: String, CodingKey {
        case acceptance
        case date
    }
}

enum Acceptance: String, Codable {
    case Pending = "Pending"
    case Accepted = "Accepted"
    case Rejected = "Rejected"
}

这些类型用于创建表单的字典

var replies =  [String: Reply]()

其中Stringkey 用于将 a 关联userId到 user Reply

但是,当我尝试将replies变量存储为 Firestore 文档的字段时,我得到了该异常。

db.collection("SomeCollection").addDocument(data: ["Replies": replies]) {...}

为什么?

谢谢!

标签: swiftenumsgoogle-cloud-firestore

解决方案


目前Firebase Firestore只支持特定的数据类型如:

  • 大批
  • 布尔值
  • 浮点数

您可以在此链接上查找更多类型。话虽如此,不幸的是,Reply它是一种自定义类型,不会被Firebase. 我的建议是分解您的自定义类型,直到您可以使用 Swift 类型(Array、String、Int)并Reply通过Acceptance使用Strings之前保存到Firebase.


推荐阅读