首页 > 解决方案 > 将字典发布到 Firestore 时获取 NSInvalidArgumentException

问题描述

我正在尝试将一组自定义对象添加到 Firestore 数据库。字典如下所示:

        for (n, eventInArray) in currentEvents.enumerated() {

            ref.updateData(["Events":
                                [n:
                                    ["activity": eventInArray.activity],
                                 ["dateAndTime"]: ["date": eventInArray.dateAndTime.date,
                                                   "time": eventInArray.dateAndTime.time],
                                 "name": eventInArray.name
                                ]])}

但是在运行应用程序并发送数据时,我收到以下错误消息:

NSInvalidArgumentException',原因:'-[__NSCFNumber getBytes:maxLength:usedLength:encoding:options:range:remainingRange:]:无法识别的选择器发送到实例 0xd628e63903198e1c'

标签: swiftgoogle-cloud-firestore

解决方案


我想出了一个解决这个问题的方法。

我没有更新一个字段,而是使用 do - catch 块更新了整个文档:

    do {
        try ref.setData(from: groupDataForDb)
    } catch let error {
        print("Error writing to firestore \(error)")
    }

groupDataForDb 变量是一个符合 Codable 的结构,并且具有与 Firestore 文档中的字段匹配的属性。


推荐阅读