【问题标题】:How to add an array to Firebase Firestore Swift如何将数组添加到 Firebase Firestore Swift
【发布时间】:2020-06-06 15:25:56
【问题描述】:

我正在尝试使用数组更新 Cloud Firestore 中文档中的数据,但是每当我尝试执行此操作时,我都会收到错误:由于未捕获的异常“FIRInvalidArgumentException”而终止应用程序,原因:“不支持的类型:__SwiftValue(找到在现场投票中)'。如果有人能帮助我理解我做错了什么以及如何解决这个问题,我将不胜感激。谢谢。代码如下。

数组更新代码-

db.collection("forum").document(data[0].id!).setData(["upvotes": data[0].upvotes!.remove(at: data[0].upvotes!.firstIndex(of: MainView.username ?? "Anonymous")!)])

【问题讨论】:

    标签: arrays swift firebase google-cloud-firestore


    【解决方案1】:

    您必须将数组传递给 Firestore 才能更新数组属性。你正在做的是传递一个数组的元素。 remove(at:) 方法,当这样使用时:

    let removedElement = someArray.remove(at: someIndex)
    

    将移除元素但返回被移除元素的值;它不返回更新的数组。必须先移除元素,然后获取截断的数组:

    someArray.remove(at: someIndex)
    let updated = someArray
    

    因此,先删除,再更新:

    data[0].upvotes!.remove(at: data[0].upvotes!.firstIndex(of: MainView.username ?? "Anonymous")! // first remove
    db.collection("forum").document(data[0].id!).setData([
        "upvotes": data[0].upvotes!) // then pass
    ])
    

    但是,我建议重新格式化代码,因为它读起来不太好,IMO,而且我的口味太费力了。

    【讨论】:

      猜你喜欢
      • 2021-09-27
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      • 1970-01-01
      • 2014-08-05
      • 2023-03-27
      • 2019-03-25
      相关资源
      最近更新 更多